我有两个要合并的R数据框。在直线R中,您可以执行以下操作:
cost <- data.frame(farm=c('farm A', 'office'), cost=c(10, 100))
trees <- data.frame(farm=c('farm A', 'farm B'), trees=c(20,30))
merge(cost, trees, all=TRUE)
产生:
farm cost trees
1 farm A 10 20
2 office 100 NA
3 farm B NA 30
我正在使用
dplyr
,并且希望使用以下解决方案:left_join(cost, trees)
产生接近我想要的东西:
farm cost trees
1 farm A 10 20
2 office 100 NA
在
dplyr
中,我可以看到left_join
,inner_join
,semi_join
和anti-join
,但是这些都不像merge
和all=TRUE
一样。另外-是否有一种将NA设置为0的快速方法?到目前为止,我使用
x$trees[is.na(x$trees)] <- 0;
的工作都很费力(我需要每列一个命令),而且似乎并不总是有效。谢谢
最佳答案
dplyr
(0.4.0)的最新版本现在具有full_join选项,我相信这是您想要的。
cost <- data.frame(farm=c('farm A', 'office'), cost=c(10, 100))
trees <- data.frame(farm=c('farm A', 'farm B'), trees=c(20,30))
merge(cost, trees, all=TRUE)
退货
> merge(cost, trees, all=TRUE)
farm cost trees
1 farm A 10 20
2 office 100 NA
3 farm B NA 30
和
library(dplyr)
full_join(cost, trees)
退货
> full_join(cost, trees)
Joining by: "farm"
farm cost trees
1 farm A 10 20
2 office 100 NA
3 farm B NA 30
Warning message:
joining factors with different levels, coercing to character vector
关于r - 是否存在用于与all = TRUE合并的R dplyr方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21841146/