R数据帧的复杂重组

时间:2016-04-26 10:55:19

标签: r dataframe

因为我有这样的数据框:

participant v1 v2 v3 v4 v5 v6
 1          4  2     9  7  2
 2             6  8        1
 3                5  4     5
 4          1  1     2  3   

每两个连续变量(v1和v2,v3和v4,v5和v6)彼此属于(这就是我后面称之为“计数”)。

我绝望地想方设法得到以下内容:

participant count  v(odd numbers) v(even numbers)
 1           1      4              2 
             2                     9
             3      7              2
 2           1                     6
             2      8
             3                     1
 3           1
             2      5              4
             3                     5
 4           1      1              1
             2                     2
             3      3              

由于这是我关于stackoverflow的第一个问题,我希望你理解我的要求。我搜索了很多类似的问题(以及它们的解决方案),但一无所获。我非常感谢你的支持。

1 个答案:

答案 0 :(得分:0)

我们可以使用melt

 library(data.table)
 melt(setDT(d1), measure = list(paste0("v", seq(1, 6, by= 2)),
          paste0("v", seq(2,6, by = 2))))[order(participant)]
#    participant variable value1 value2
# 1:           1        1      4      2
# 2:           1        2     NA      9
# 3:           1        3      7      2
# 4:           2        1     NA      6
# 5:           2        2      8     NA
# 6:           2        3     NA      1
# 7:           3        1     NA     NA
# 8:           3        2      5      4
# 9:           3        3     NA      5
#10:           4        1      1      1
#11:           4        2     NA      2
#12:           4        3      3     NA