我是R的新手,在这里我需要一些帮助来构建我的数据。
我有两个数据集: 其中一个是主题数据集中的长格式,它很大,看起来有点像这样:
long.format <- data.frame(subject.no = c(1, 1, 1, 1, 2, 2, 2, 2), condition = c("prime", "prime", "prime", "prime", "control", "control","control","control"), response = c(1,1,1,0,1,1,1,0))
subject.no condition response
>1 1 prime 1
>2 1 prime 1
>3 1 prime 1
>4 1 prime 0
>5 2 control 1
>6 2 control 1
>7 2 control 1
>8 2 control 0
另一个已经是宽格式,看起来像这样
wide.format <- data.frame(subject = c(1, 2), age = c(26,27), gender = c("m","f"))
subject age gender
>1 1 26 m
>2 2 27 f
我现在唯一想做的就是通过在宽数据中添加一个新列,将长条形数据框中的“条件”(并且只有这个!)中的值传递到宽数据框中的相应主题frame(分别使用subject.no和subject列。)
所以最终的数据框应如下所示:
wide.format.aim <- data.frame(subject = c(1, 2), age = c(26,27), gender = c("m","f"), condition = c("prime","control"))
subject age gender condition
>1 1 26 m prime
>2 2 27 f control
我尝试过合并,但最终得到了一个长格式数据框,其中添加了来自宽幅数据框的信息...但我想要反过来......
这是我尝试过的:
test.it <- merge(x=wide.format, y=long.format[,c("subject.no", "condition")], all.x=T, by.x="subject", by.y="subject.no")
有什么建议吗?
提前致谢!
答案 0 :(得分:0)
您有兴趣合并long.format[,c("subject.no", "condition")]
的唯一值:
unique(long.format[,c("subject.no", "condition")])
# subject.no condition
#1 1 prime
#5 2 control
您可以使用这些值进行合并
merge(x = wide.format,
y = unique(long.format[,c("subject.no", "condition")]),
by.x = "subject",
by.y = "subject.no")
# subject age gender condition
#1 1 26 m prime
#2 2 27 f control