Ошибка SQLDF — синтаксическая ошибка

Я запускаю следующую команду:

sqldf("SELECT * FROM dat WHERE Form LIKE '%compare%' AND Create.Date LIKE '%7/01/11%' AND Post.Status = 'Success'")

но в итоге получаю следующую ошибку.

Error in sqliteExecStatement(con, statement, bind.data) : 
  RS-DBI driver: (error in statement: near "Create": syntax error)

Может ли кто-нибудь сказать мне, что случилось.

> str(dat)
'data.frame':   23 obs. of  12 variables:
 $ ID            : int  4873 4874 4890 4893 4895 4902 4904 4905 4906 4921 ...
 $ Name          : Factor w/ 18 levels "Casey Ryan","Elizabeth Cullen",..: 13 9 15 15 16 15 15 15 16 12 ...
 $ Create.Date   : Factor w/ 23 levels "03:23.0","14:43.0",..: 3 15 20 13 23 6 12 14 21 4 ...
 $ In.Click.ID   : int  32787 32788 13480 21050 21041 32824 27807 27806 15350 32911 ...
 $ Traffic.Source: Factor w/ 3 levels "FACEBOOK","GOOGLE",..: 3 3 1 3 2 3 3 3 2 3 ...
 $ Refer.Domain  : Factor w/ 7 levels "","autoinsurancestep",..: 3 2 7 1 2 4 4 2 5 4 ...
 $ Form          : Factor w/ 3 levels "","autoinsurancestep",..: 2 1 1 1 3 3 3 3 1 3 ...
 $ Keyword       : Factor w/ 3 levels "","{keyword}",..: 1 1 2 1 3 1 1 1 2 1 ...
 $ Ping.Status   : Factor w/ 2 levels "","Success": 1 2 1 1 1 2 1 1 1 2 ...
 $ Post.Status   : Factor w/ 2 levels "","Success": 1 2 1 1 1 2 1 1 1 2 ...
 $ Buyer         : Factor w/ 8 levels "","ALL_WEB_LEADS",..: 1 6 1 1 1 7 1 1 1 8 ...
 $ Amount        : int  0 217 0 0 0 3000 0 0 0 1200 ...

person ATMathew    schedule 14.09.2011    source источник
comment
Было бы полезно, если бы вы предоставили некоторую информацию о структуре dat, возможно, используя dput(head(dat)).   -  person joran    schedule 15.09.2011
comment
Просто просматривая примеры в ?sqldf, кажется, что точки в именах переменных - это проблема. Обратите внимание на примеры, использующие набор данных радужной оболочки. Попробуйте вместо этого использовать символы подчеркивания или полностью переименовать столбцы.   -  person joran    schedule 15.09.2011
comment
Отдельно я не думаю, что вы собираетесь сопоставлять что-либо с Create.Date (даже если вы переименуете, чтобы обойти проблему с точками), потому что в вашем dat переменная равна 03:23.0, и вы пытаетесь сопоставить %7/ 01/11% (хотя я могу ошибаться, и один из других 21 уровней может соответствовать этому).   -  person Brian Diggs    schedule 15.09.2011
comment
Точки в именах столбцов и SQL — это большое нет. См. вопрос часто задаваемых вопросов 2 @ code.google.com/p/sqldf.   -  person Roman Luštrik    schedule 15.09.2011
comment
Хотя точки не разрешены в правильном SQL, вы можете заменить точку подчеркиванием в именах столбцов и именах объемных таблиц, которые включают точки с обратными кавычками для целей sqldf.   -  person Jeff Erickson    schedule 16.09.2012


Ответы (1)


В SQL точка отделяет имя базы данных от имени таблицы. Поэтому не используйте для этого точки в именах.

person MvG    schedule 01.08.2012