2011-09-14 187 views
2

我運行下面的命令: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 ... 
+2

如果你提供了關於'dat'結構的一些信息,或許使用'dput(head(dat))',它會有所幫助。 – joran

+0

只需在'?sqldf'中掃描例子,看起來變量名稱中的句號是麻煩的。請注意使用虹膜數據集的示例。嘗試使用下劃線,或者完全重命名列。 – joran

+0

另外,我不認爲你會與Create.Date匹配任何東西(即使你重命名以解決點問題),因爲在你的'dat'中變量是「03:23.0」,你正試圖匹配%7/01/11%(儘管我可能是錯的,其他21個關卡中的其中一個可能會匹配)。 –

回答

1

在SQL中,點將數據庫名與表名分開。所以不要在名稱中使用點。