【发布时间】:2017-03-24 19:04:07
【问题描述】:
我有一个这样的数据集:
> df<-data.frame(gender=c(rep("male",3),rep("female",3)),
Age=c(rep("old",3),rep("young",3)),VAR=c(rep(1:3),rep(1:3)),
FEN1=c(21,26,29,30,6,11),FEN2=c(14,55,12,33,9,21),
FEN3=c(88,23,55,23,14,66))
其中 FEN1、FEN2 和 FEN3 包含属于该组且具有 VAR、Gender、Age、FEN 列的特征的个体总数。
我需要将其更改为一个数据框,其中每一行属于一个人(总共 536 行),具有 VAR、Gender、Age 列的特征。
预期的输出将包含:
- 21行有信息:男、老、1、FEN1
- 14行有信息:男、老、1、FEN2
- 88行有信息:男、老、1、FEN3
- 26行有信息:男、老、2、FEN1
- 55行有信息:男、老、2、FEN2
- 23行有信息:男、老、2、FEN3
- 等等……
我试图用如下代码手动完成:
> df2<-as.data.frame(1:536)
> FEN <- c(rep("FEN1",123), rep("FEN2",144), rep("FEN3",269))
> df2$FEN<-FEN
> Gender<-c(rep("male",...)...
但显然它根本没有效率。
【问题讨论】:
-
最终你可以从宽到长重塑stackoverflow.com/questions/2185252/…,然后使用数字来复制行。或者对于每一行,您从 FEN1、FEN2、FEN3 中获取数字并为以后的 rbind() 构建新的数据帧。
标签: r dataframe data-conversion