R:从另一个数据帧中获取相应的值

时间:2016-04-08 17:16:46

标签: r

我是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")

有什么建议吗?

提前致谢!

1 个答案:

答案 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