Rac*_*ole 32 r dataframe dplyr
我有两个想要合并的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)
Run Code Online (Sandbox Code Playgroud)
产生:
farm cost trees
1 farm A 10 20
2 office 100 NA
3 farm B NA 30
Run Code Online (Sandbox Code Playgroud)
我正在使用dplyr,并且更喜欢以下解决方案:
left_join(cost, trees)
Run Code Online (Sandbox Code Playgroud)
它产生的东西接近我想要的东西:
farm cost trees
1 farm A 10 20
2 office 100 NA
Run Code Online (Sandbox Code Playgroud)
在dplyr我可以看到left_join,inner_join,semi_join和anti-join,但这些都不做什么merge用all=TRUE呢.
另外 - 是否有一种快速的方法将NA设置为0?到目前为止我使用的努力x$trees[is.na(x$trees)] <- 0;是费力的(我需要每列一个命令),并不总是似乎工作.
谢谢
Avr*_*ham 25
最新版本的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)
Run Code Online (Sandbox Code Playgroud)
返回
> merge(cost, trees, all=TRUE)
farm cost trees
1 farm A 10 20
2 office 100 NA
3 farm B NA 30
Run Code Online (Sandbox Code Playgroud)
和
library(dplyr)
full_join(cost, trees)
Run Code Online (Sandbox Code Playgroud)
返回
> 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25487 次 |
| 最近记录: |