如何创建一个非规范化的数据帧,其值和类型来自R中的一组其他变量
因此,我有以下数据框架:如何创建一个非规范化的数据帧,其值和类型来自R中的一组其他变量,r,dataframe,R,Dataframe,因此,我有以下数据框架: > data.frame(id=c(1,2),a=c(10,11),b=c(20,21)) id a b 1 10 20 2 11 21 我想创建一个非规范化的数据框架,它接受两列或更多列的值,并创建两列,一列用于值来自的列,另一列用于值本身,因此最终的数据框架的行数多于列数 结果应该如下所示: > data.frame(id=c(1,1,2,2),x=c(10,20,11,21),type=c("a","b","a","b")) id
> data.frame(id=c(1,2),a=c(10,11),b=c(20,21))
id a b
1 10 20
2 11 21
我想创建一个非规范化的数据框架,它接受两列或更多列的值,并创建两列,一列用于值来自的列,另一列用于值本身,因此最终的数据框架的行数多于列数
结果应该如下所示:
> data.frame(id=c(1,1,2,2),x=c(10,20,11,21),type=c("a","b","a","b"))
id x type
1 10 a
1 20 b
2 11 a
2 21 b
当然,值的顺序并不重要
谢谢大家 使用tidyverse方法:
library("tidyverse")
your_df <- data.frame(id=c(1,2),a=c(10,11),b=c(20,21))
your_df_long_form <- your_df %>%
gather(key = type, value = x, a:b) %>%
arrange(id)
尝试
melt
:重塑2::melt(data.frame(id=c(1,2),a=c(10,11),b=c(20,21)),1)
id type x
1 1 a 10
2 1 b 20
3 2 a 11
4 2 b 21