[R数据框的复杂的重组

问题描述:

,因为我有一个这样的数据帧:[R数据框的复杂的重组

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)属于彼此(这就是我所说的“计数”稍后)。

我desperatly寻找一种方式来获得如下:

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    

由于这是有史以来的计算器我的第一个问题,我希望你明白我的要求。我搜索了很多类似的问题(和他们的解决方案),但什么也没找到。我非常感谢你的支持。

+0

你所说的“属于彼此”是什么意思?你试过什么了?你可以分享代码吗?你可以在你的数据框中使用'dput()'来使这个例子更容易重现。 – epo3

我们可以使用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 
+0

非常感谢@akrun,您的快速回复。我认为'熔化'将是解决方案,但不知道你使用的其他论据。看起来完全像我所要求的。不幸的是,当我将它应用到我的数据框时,出现一个错误:'Unknown'measure.var'type list,必须是字符或整数向量''。这里是我的行:'melt(setDT(sub.cr),measure = list(paste0(“valence”,seq(1,400,by = 2)),paste0(“arousal”,seq(2,400,by = 2))))[order(lfdn)]'。我的错误是什么? – scylyne

+0

@scylyne你可以使用显示错误的小数据集的dput来更新你的文章 – akrun