我需要连接两个表,其中我要使用的公共列id在每个表中有不同的名称。这两个表有一个“false”公共列名,当dplyr采用默认值并对列“id”进行联接时,该列名不起作用。
下面是一些与这个问题有关的代码

library(dplyr)
library(RMySQL)

SDB <- src_mysql(host = "localhost", user = "foo", dbname = "bar", password = getPassword())
# Then reference a tbl within that src
administrators <- tbl(SDB, "administrators")
members <- tbl(SDB, "members")

这里有三次尝试——都失败了——传递的信息是,成员端的common列是“id”,而管理员端的common列是“idmember”:
sqlq  <- semi_join(members,administrators, by=c("id","idmember"))
sqlq  <- inner_join(members,administrators, by= "id.x = idmember.y")
sqlq  <- semi_join(members,administrators, by.x = id, by.y = idmember)

下面是我收到的错误消息类型的示例:
mysqlexecstatement(conn,statement,…)中的错误:
RS-DBI驱动程序:(无法运行语句:“where子句”中的未知列“\u left.idmember”)
我看到的例子与r端的数据表和数据帧有关。我的问题是dplyr如何将“by”语句发送到sql引擎。

最佳答案

在dplyr的下一个版本中,您将能够:

inner_join(members, administrators, by = c("id" = "idmember"))

08-25 06:42