2016-11-09 1 views
0

Я пытаюсь получить некоторые строки из моего фрейма данных с помощью пакета sqldf, но запрос возвращает 0 строк, несмотря на данные, находящиеся там.Запрос, возвращающий 0 строк с пакетом sqldf

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), я видел, что мои даты начинаются как 16084 и т. Д. Вместо «2014-11-03». Поэтому я заменил «2014-11-03» на 16084, и запрос работал. –

+0

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

ответ

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 [email protected]_10", 
        systemid = 49, 
        periodicityid = 37, 
        rptday = as.Date("2014-11-04"), 
        dailynetprofit = -620) 

 Смежные вопросы

  • Нет связанных вопросов^_^