sqldf: consulta de datos por rango de fechas
Estoy leyendo un gran archivo de texto que tiene'%d/%m/%Y'
formato de fecha. Quiero usar read.csv.sql de sqldf para leer y filtrar los datos por fecha al mismo tiempo. Esto es para ahorrar uso de memoria y tiempo de ejecución omitiendo muchas fechas que no me interesan. Sé cómo hacerlo con la ayuda dedplyr
ylubridate
, pero solo quiero probar consqldf
por la razón antes mencionada. A pesar de que estoy bastante familiarizado con la sintaxis de SQL, todavía me da la mayor parte del tiempo, sin excepción consqldf
.
Ejecutar un comando como el siguiente devolvió un data.frame con 0 filas:
first_date <- "2001-11-1"
second_date <- "2003-11-1"
query <- "select * from file WHERE strftime('%d/%m/%Y', Date, 'unixepoch', 'localtime') between
'$first_date' AND '$second_date'"
df <- read.csv.sql(data_file,
sql= query,
stringsAsFactors=FALSE,
sep = ";", header = TRUE)
Entonces, para la simulación, intenté consqldf
Funciona de la siguiente manera:
first_date <- "2001-11-1"
second_date <- "2003-11-1"
df2 <- data.frame( Date = paste(rep(1:3, each = 4), 11:12, 2001:2012, sep = "/"))
sqldf("SELECT * FROM df2 WHERE strftime('%d/%m/%Y', Date, 'unixepoch') BETWEEN '$first-date' AND '$second_date' ")
# Expect:
# Date
# 1 1-11-2001
# 2 1-12-2002
# 3 1-11-2003