R 如何基于数据帧中的两个条件选择一个值,然后将其粘贴到另一个数据帧中的单元格中?

R 如何基于数据帧中的两个条件选择一个值,然后将其粘贴到另一个数据帧中的单元格中?,r,R,我有两个数据帧。其中一个有两个物体出现的试验。另一个有关于这两个对象如何关联的信息(视觉相似性)。对于第一个数据帧中的每一行(试用),我希望提取对象的名称,并使用它们查找第二个数据帧中的特定行。它们看起来像这样: Trial probepic target_pic vissim 1 1 Robot1 Robot6 NA 2 2 Robot1 Robot3 NA 3 3 Robot5 Robot6 NA 4 4

我有两个数据帧。其中一个有两个物体出现的试验。另一个有关于这两个对象如何关联的信息(视觉相似性)。对于第一个数据帧中的每一行(试用),我希望提取对象的名称,并使用它们查找第二个数据帧中的特定行。它们看起来像这样:

  Trial probepic target_pic vissim
1     1  Robot1    Robot6     NA
2     2  Robot1    Robot3     NA
3     3  Robot5    Robot6     NA
4     4  Robot2    Robot1     NA
5     5  Robot3    Robot9     NA
6     6  Robot14   Robot9     NA

    Rob1   Rob2  sim
1 Robot1 Robot1   NA
2 Robot2 Robot1 2.88
3 Robot3 Robot1 3.75
4 Robot4 Robot1 1.63
5 Robot5 Robot1 3.63
6 Robot6 Robot1 2.50
等等。 我想要的是使用probepic和target_pic变量从第二个数据帧中选择sim的值,并将其粘贴到第一个数据帧中的vissim中。我一直在使用subset,我可以使用以下代码获得正确的值:

subset(vissim, Rob1=="Robot1" & Rob2=="Robot2")$sim

但是我想为每一行使用
probepic
target\u pic
变量,而不是“Robot1”和“Robot2”。最后在第一个数据帧中为每一行应用函数。因此,在每一行中,函数将查看
probepic
列,并将值与
Rob1
列匹配,然后查看
target\u pic
列,并将该值与
Rob2
列匹配。这将在第二个数据帧中指定一个唯一的行。然后,它将从该唯一行中获取
sim
的值,并将其粘贴到
vissim

我想您希望将数据集合并在一起。请尝试以下操作:

newDf <- merge(df1, df2, by.x=c("probepic", "target_pic"), by.y=c("Rob1", "Rob2"), all=T)

newDf预期的输出是什么样子的?就是这样,谢谢!我担心merge不是正确的函数,因为df1有多个Robot1、Robot2行的实例,但它为每一行复制了正确的
sim
df1 <- read.table(header=T, text="  Trial probepic target_pic vissim
1  Robot1    Robot6     NA
2  Robot1    Robot3     NA
3  Robot5    Robot6     NA
4  Robot2    Robot1     NA
5  Robot3    Robot9     NA
6  Robot14   Robot9     NA")

df2 <- read.table(header= T, text="    Rob1   Rob2  sim
Robot1 Robot1   NA
Robot2 Robot1 2.88
Robot3 Robot1 3.75
Robot4 Robot1 1.63
Robot5 Robot1 3.63
Robot6 Robot1 2.50")