我有两个数据框。其中一个试验中出现了两个物体。另一个有关于这两个对象如何相关的信息(视觉相似性)。对于第一个数据框中的每一行(试验),我想拉出对象的名称并使用它们来查找第二个数据框中的特定行。它们看起来像这样:
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(vissim, Rob1=="Robot1" & Rob2=="Robot2")$sim
但我想为每一行使用probepic
和target_pic
变量而不是“Robot1”和“Robot2”。最后,为第一个数据框中的每一行应用该函数。因此,在每一行中,该函数将在probepic
列中查找并将值与Rob1
列匹配,然后查看target_pic
列并将该值与{{1列。这将在第二个数据框中指定唯一的行。然后,它会从该唯一行中获取Rob2
的值并将其粘贴到sim
。
答案 0 :(得分:2)
我认为您想要将数据集合并在一起。请尝试以下方法:
newDf <- merge(df1, df2, by.x=c("probepic", "target_pic"), by.y=c("Rob1", "Rob2"), all=T)
数据强>
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")