【发布时间】:2017-07-20 14:21:58
【问题描述】:
我有以下数据:
library(dplyr)
a<-data.frame("one"=c(1:10),
"two"=c("","","","","a","a","a","a","a","a"), stringsAsFactors = F)
b<-data.frame("one"=c(4,2,6),
"two"=c("C","D","A"), stringsAsFactors = F)
我想将left_join b 放到a 上,这样a$two 在a$one == b$one 时得到b$two 的值。我喜欢这样:
left_join(a, b, by="one")
为了拥有和之前一样的结构,我们可以这样做
left_join(a, b, by="one") %>%
mutate(two=ifelse(is.na(two.y), two.x, two.y)) %>%
select(-c(two.x, two.y))
这给了我想要的输出:
one two
1 1
2 2 D
3 3
4 4 C
5 5 a
6 6 A
7 7 a
8 8 a
9 9 a
10 10 a
有没有办法执行left_join,这样就不需要mutate 和select 来获得所需的输出?即,有没有更有效的方法来获得我想要的东西?现在看来mutate和select都觉得很麻烦
【问题讨论】: