R数据帧的复杂重构

R数据帧的复杂重构,r,dataframe,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

因为我有这样一个数据帧:

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的第一个问题,希望你能理解我的要求。我搜索了很多类似的问题(以及解决方案),但什么也没找到。非常感谢您的支持。

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

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

你所说的“属于彼此”是什么意思?到目前为止你试过什么?你能分享代码吗?您可以在数据帧上使用
dput()
,以使此示例更易于重现。您所说的“彼此属于”是什么意思?到目前为止你试过什么?你能分享代码吗?您可以在数据帧上使用
dput()
,以使此示例更易于复制。非常感谢@akrun的快速回复。我假设
melt
将是解决方案,但不知道您使用了哪些额外参数。看起来和我要求的一模一样。不幸的是,当我将此应用于数据帧时,我得到一个错误:
Unknown'measure.var'类型列表,必须是字符或整数向量“
。我的行是:
melt(setDT(sub.cr),measure=list(paste0(“valence”,seq(1400,by=2)),paste0(“arousal”,seq(2400,by=2)))[order(lfdn)]
。我犯了什么错误?@scylyne你能用一个显示错误的小数据集的dput更新你的帖子吗?@akrun,非常感谢你的快速回复。我认为
melt
将是解决方案,但不知道你使用的额外参数。看起来和我要求的完全一样。不幸的是,当我应用这个时对于我的数据帧,我得到一个错误:
Unknown'measure.var'类型列表,必须是字符或整数向量“
。这是我的台词:
melt(setDT(sub.cr),measure=list(paste0(“价”,seq(1400,by=2)),paste0(“觉醒”,seq(2400,by=2))))[order(lfdn)]
。我的错误是什么?@scylyne你能用显示错误的小数据集的dput更新你的帖子吗