sqldf в R генерирует ошибку

Я пытаюсь объединить две таблицы в R с помощью следующей команды:

library(gsubfn)
library(proto)
library(RSQLite)
library(sqldf)
sqldf("SELECT Gender, Pmu.try.Sat.Ltd, Online.Campus.Student, Residency,
           tutorial_avg_score
           FROM A JOIN B
           USING(userID)")

Система выдает следующую ошибку:

Error in result_create(conn@ptr, statement) : near ".": syntax error

Может ли кто-нибудь посоветовать, в чем может быть проблема? Имена столбцов немного странные, но они очень похожи на настоящие имена, которые у меня есть в предоставленных данных. Я посмотрел на следующий вопрос: Ошибка в rsqlite_send_query (conn @ ptr, statement): near (: syntax error Но мне это тоже не помогает.

Жду вашего доброго совета по этому поводу!


person Sandy    schedule 06.08.2018    source источник
comment
Точка - это оператор SQL, поэтому, если у вас есть столбцы с точкой в ​​их имени, они должны быть заключены в двойные кавычки ... или квадратные скобки [...]   -  person G. Grothendieck    schedule 07.08.2018
comment
Спасибо, что помогло, но ... не сработало. Вместо этого тильда под ним сотворила чудо. Квадратные скобки тоже работают нормально, я не знал об этом, еще раз спасибо!   -  person Sandy    schedule 07.08.2018
comment
Двойные кавычки действительно работают. Возможно, вы пытались использовать двойные кавычки внутри двойных кавычек. Вы должны использовать одинарные кавычки снаружи, если вы это сделаете, или используйте обратную косую черту, чтобы избежать их.   -  person G. Grothendieck    schedule 07.08.2018
comment
Да ты прав. Еще раз спасибо за оперативную помощь !!   -  person Sandy    schedule 07.08.2018


Ответы (1)


Следующие решения разрешили ошибку, с которой я столкнулся:

sqldf('SELECT Gender, "Pmu.try.Sat.Ltd", "Online.Campus.Student", Residency,
       tutorial_avg_score
       FROM A JOIN B
       USING(userID)')

OR

sqldf('SELECT Gender, `Pmu.try.Sat.Ltd`, `Online.Campus.Student`, Residency,
       tutorial_avg_score
       FROM A JOIN B
       USING(userID)')

OR

sqldf('SELECT Gender, [Pmu.try.Sat.Ltd], [Online.Campus.Student], Residency,
       tutorial_avg_score
       FROM A JOIN B
       USING(userID)')

Большое спасибо @G. Гротендику за добрые комментарии!

person Sandy    schedule 11.08.2018