[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
由于这是有史以来的计算器我的第一个问题,我希望你明白我的要求。我搜索了很多类似的问题(和他们的解决方案),但什么也没找到。我非常感谢你的支持。
我们可以使用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
非常感谢@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
@scylyne你可以使用显示错误的小数据集的dput来更新你的文章 – akrun
你所说的“属于彼此”是什么意思?你试过什么了?你可以分享代码吗?你可以在你的数据框中使用'dput()'来使这个例子更容易重现。 – epo3