【问题标题】:Simple reshape of a data frame from wide to long [duplicate]数据框从宽到长的简单重塑[重复]
【发布时间】:2026-02-03 06:10:01
【问题描述】:

我在重塑数据框时遇到问题。

这是一个示例数据集:

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

【问题讨论】:

    标签: r dataframe reshape


    【解决方案1】:

    您是否在 */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]
    

    【讨论】:

      【解决方案2】:

      您正在寻找 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
      

      【讨论】: