【发布时间】:2017-07-20 04:55:31
【问题描述】:
我有两个表 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
【问题讨论】:
-
也许你应该发布你的数据
-
@VidaWang 好的,已经更新了。
-
(1) 当我使用您发布的数据运行您的 sqldf 语句时,我没有收到任何错误。如果您确实遇到了错误,则可能是您打错了字或其他未显示的内容。 (2) 我确实收到一个警告,但您可以忽略它。或使用旧版本的 RSQLite。 (它是由该软件包的最新版本引入的。)或者只运行两次。我相信它只会在您第一次在会话中使用 sqldf 时发出警告。 (3) 如果要显示输出,则需要使用
distinct:sqldf("select distinct * from df1 left join df2 using(id)")