Мне нужно объединить две таблицы, в которых общий идентификатор столбца, который я хочу использовать, имеет другое имя в каждой таблице. Две таблицы имеют "ложное" общее имя столбца, которое не работает, когда 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")
Вот 3 попытки — все они не увенчались успехом — передать информацию о том, что общий столбец на стороне участников — «id», а на стороне администраторов — «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 (соединение, оператор, ...): драйвер RS-DBI: (не удалось запустить оператор: неизвестный столбец «_LEFT.idmember» в «предложении where»)
Примеры, которые я вижу, относятся к таблицам данных и фреймам данных на стороне R. Мой вопрос о том, как dplyr отправляет операторы «by» в механизм SQL.