我想匹配两个数据帧中两列的值并添加第三列,最好查看数据帧:
FromA <- c("a", "b", "d")
ToA <- c("a", "k", "h")
PAC<- c("red", "blue", "black")
df1 <- data.frame(FromA, ToA, PAC)
> df1
FromA ToA PAC
1 a a red
2 b k blue
3 d h black
FromB<- c("a", "b", "f")
ToB <- c("a", "k", "h")
df2<- data.frame(FromB, ToB)
> df2
FromB ToB
1 a a
2 b k
3 f h
如果第一两列的值匹配,我希望第二个数据帧获得df1$PAC
的值。
最终结果:
> DF2
FromB ToB PAC
1 a a red
2 b k blue
3 f h NA
因此,我使用了sapply()
df2$PAC<- sapply(1:nrow(df2), function(i)
df1$PAC[df1$FromA==df2$FromB[i] & df1$ToA == df2$ToB[i] ])
如果两列完全匹配,该函数将起作用,否则,将给我一个错误。
您能帮助我了解我所缺少的吗?我会很感激的。
答案 0 :(得分:1)
您可以简单地使用merge
函数:
merge(df1, df2, by.x = c("FromA", "ToA"), by.y = c("FromB", "ToB"), all.y = T)