2016-11-09 5 views
0

sqldfパッケージを使用してデータフレームから一部の行を取得しようとしていますが、データが存在してもクエリが0行を返しています。sqldfパッケージで0行を返すクエリ

str(DATA) 
'data.frame': 51500 obs. of 5 variables: 
$ MaxBullProb : Factor w/ 100 levels "CX000096 [email protected]_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) 

私は、クエリが動作していない理由はわかりません。

+0

dput(DATA)を実行した後、私の日付が「2014-11-03」ではなく、16084などになることがわかりました。だから私は'2014-11-03 'を16084に置き換え、クエリが機能しました。 –

+0

関連 - http://stackoverflow.com/questions/39241030/r-date-function-in-sqldf-giving-unusual-answer-wrong-date-format/39241668 – thelatemail

答えて

3

"Date"クラスの列は、Ep​​ochからの日数としてSQLiteに転送されますので、これを試してください。 ?fnを参照してください。

 rptday dailynetprofit 
1 2014-11-04   -620 

注:再現可能な形でテスト入力は、(次回 このようにそれを提供してください)以下注1つの行テスト入力のために、与え、

library(sqldf) 

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

DATA <- data.frame(MaxBullProb = "CX000096 [email protected]_10", 
        systemid = 49, 
        periodicityid = 37, 
        rptday = as.Date("2014-11-04"), 
        dailynetprofit = -620) 
関連する問題