我无法重塑数据框。这一定是非常简单的事情,但我无法解决这个问题。
以下是一个示例数据集:
u<-data.frame(patient=1:9,time=1:3,var1=rnorm(9),var2=rnorm(9),var3=rnorm(9),var5=rnorm(9),var6=rnorm(9))
而不是6,我有20个变量。
我唯一想要的是将这个宽数据集转换为长数据集。另外,我一直在搜索堆栈溢出/谷歌如何做到这一点,但不成功。这里发布的大多数重塑问题似乎比我追求的更难。
我所追求的是:
patient time variable value
1 1 var1 1.70484636
2 2 var1 0.19637999
3 3 var1 -1.20419038
4 1 var1 0.06944788
5 2 var1 -1.03074549
6 3 var1 0.9396862
7 1 var1 -0.57904879
8 2 var1 1.16163798
9 3 var1 1.11314472
1 1 var2 0.2138141
2 2 var2 2.9763986
3 3 var2 0.9686543
4 1 var2 0.1321531
5 2 var2 0.844687
6 3 var2 1.1336502
7 1 var2 0.5902222
8 2 var2 1.392971
9 3 var2 1.5335116
1 1 var3 0.93968 62
2 2 var3 2.9763986
3 3 var3 0.844687
....
干杯, LUC
答案 0 :(得分:1)
您是否在stackoverflow / Google搜索中遇到了reshape2包?
require(reshape2)
melt(u, id = c('patient', 'time'))
# patient time variable value
1 1 1 var1 0.25585248
2 2 2 var1 -0.98750355
3 3 3 var1 -0.12871163
4 4 1 var1 -0.11789488
5 5 2 var1 -1.16252583
6 6 3 var1 -0.46498923
7 7 1 var1 -2.11571402
8 8 2 var1 -1.91485293
9 9 3 var1 -0.19154752
10 1 1 var2 2.38927206
[skip]
答案 1 :(得分:0)
您正在寻找reshape2套餐。
require('reshape2')
head(melted.u <- melt(u, id.vars=c('patient', 'time')))
patient time variable value
1 1 1 var1 -1.8745
2 2 2 var1 0.6428
3 3 3 var1 0.4367
4 4 1 var1 0.1102
5 5 2 var1 -0.1590
6 6 3 var1 1.7786