![](/img/trans.png)
[英]In R how do I remove empty rows from a data frame and extract one value from a cell and paste it in other cell?
[英]How do I select a value based on two conditions from a data frame and then paste it into a cell in another data frame?
我有两个数据框。 其中一项试验中出现了两个物体。 另一个具有有关这两个对象如何关联的信息(视觉相似性)。 对于第一个数据帧中的每一行(试用版),我想提取对象的名称并使用它们来查找第二个数据帧中的特定行。 他们看起来像这样:
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
列和匹配值的Rob2
列。 这将在第二个数据帧中指定唯一行。 然后,它将从该唯一行中获取sim
的值并将其粘贴到vissim
。
我认为您想将数据集合并在一起。 请尝试以下操作:
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")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.