查询使用sqldf包返回0行

时间:2016-11-09 22:40:45

标签: r dataframe sqldf

我正在尝试使用sqldf包从我的数据框中检索一些行,但是尽管存在数据,但查询返回0行。

str(DATA)
'data.frame':   51500 obs. of  5 variables:
$ MaxBullProb   : Factor w/ 100 levels "CX000096 w02c05s02@CL.CC_10",..: 1 2 3 4 5 6 7 8 9 10 ...
$ systemid      : int  49 49 49 49 49 49 49 49 49 49 ...
$ periodicityid : int  37 48 58 43 52 45 4 56 80 40 ...
$ rptday        : Date, format: "2014-11-03" "2014-11-03" "2014-11-03" "2014-11-03" ...
$ dailynetprofit: int  -620 -2000 -470 -2250 -1830 -1590 750 685 -315 -555 ...

我正在运行的查询是:

QUERY<-"SELECT rptday,dailynetprofit from DATA WHERE rptday > '2014-11-03'"
QUERY_RES<-sqldf(QUERY)

QUERY_RES
[1] rptday         dailynetprofit
<0 rows> (or 0-length row.names)

我不确定为什么查询无效。

1 个答案:

答案 0 :(得分:3)

"Date"类列被转移到SQLite作为自Epoch以来的天数,所以试试这个。请参阅?fn

library(sqldf)

compareDate <- as.Date("2014-11-03")
QUERY <- "SELECT rptday, dailynetprofit from DATA WHERE rptday > $compareDate"
fn$sqldf(QUERY)

,对于下面的注释中的一行测试输入,给出:

      rptday dailynetprofit
1 2014-11-04           -620

注意:以可重复的形式进行测试输入(下次请提供 此):

DATA <- data.frame(MaxBullProb = "CX000096 w02c05s02@CL.CC_10",
                   systemid = 49,
                   periodicityid = 37,
                   rptday = as.Date("2014-11-04"),
                   dailynetprofit = -620)