-2

我在重塑数据框时遇到了麻烦。

这是一个示例数据集:

u<-data.frame(patient=1:9,time=1:3,var1=rnorm(9),var2=rnorm(9),var3=rnorm(9),var5=rnorm(9),var6=rnorm(9))

我有 20 个变量,而不是 6 个。

我唯一想要的就是把这个宽数据集变成一个长数据集。另外,我一直在 Stack Overflow/Google 上搜索如何做到这一点,但没有成功。这里发布的大多数重塑问题似乎比我所追求的要困难得多。

我追求的是:

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
....
4

2 回答 2

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]
于 2013-01-30T23:27:33.280 回答
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
于 2013-01-30T23:31:41.530 回答