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更新你的帖子吗