我有两张桌子df1和df2。现在我想通过相同的id将df2的变量newVar
连接到df1。但问题是df1中存在一些ID,但df2中不存在。
所以我想要if df1.id exists in df2, then df1.newVar=df2.newVar, else df1.newVar=0
。
在R中,我尝试了df1$newVar= ifelse((df1$id %in% df2$id), df2$newVar, 0)
但结果并不好。
我也试过sqldf('select df1.*, df2.newVar as newVar from df1 left outer join df2 on df2.id= df1.id')
但是R给出了错误。
以下是df1:
的示例id var1
A 1
A 2
B 1
DF2:
id newVar
A 1
A 1
我希望df1的结果如下:
id var1 newVar
A 1 1
A 2 1
B 1 0
答案 0 :(得分:2)
您可以使用 left_join {dplyr} 来完成这项工作。
library("dplyr")
df1 <- data_frame(
id = c("A", "A", "B"),
var1 = c(1, 2, 1)
)
df2 <- data_frame(
id = c("A", "A"),
newvar = c(1, 1)
)
unique(left_join(df1,df2,by="id"))
结果是:
# A tibble: 3 × 3
id var1 newvar
<chr> <dbl> <dbl>
1 A 1 1
2 A 2 1
3 B 1 NA