De hecho, como se mencionó anteriormente (y en otras partes de SO), para convertir la cadena en una fecha, necesita una fecha específica del mes. Desde la as.Date()
página del manual:
Si la cadena de fecha no especifica la fecha completamente, la respuesta devuelta puede ser específica del sistema. El comportamiento más común es asumir que un año, mes o día faltante es el actual. Si especifica una fecha incorrectamente, las implementaciones confiables darán un error y la fecha se informa como NA. Desafortunadamente, algunas implementaciones comunes (como glibc
) no son confiables y adivinan el significado deseado.
Una solución simple sería pegar la fecha "01"
en cada fecha y usarla strptime()
para indicarla como el primer día de ese mes.
Para aquellos que buscan un poco más de información sobre el procesamiento de fechas y horas en R:
En R, los tiempos usan POSIXct
y las POSIXlt
clases y las fechas usan la Date
clase.
Las fechas se almacenan como el número de días desde el 1 de enero de 1970 y las horas se almacenan como el número de segundos desde el 1 de enero de 1970.
Así por ejemplo:
d <- as.Date("1971-01-01")
unclass(d)
pct <- Sys.time()
unclass(pct)
plt <- as.POSIXlt(pct)
up <- unclass(plt)
names(up)
up$hour
Para realizar operaciones en fechas y horas:
plt - as.POSIXlt(d)
Y para procesar fechas, puede usar strptime()
(tomando prestados estos ejemplos de la página del manual):
strptime("20/2/06 11:16:16.683", "%d/%m/%y %H:%M:%OS")
dates <- c("1jan1960", "2jan1960", "31mar1960", "30jul1960")
strptime(dates, "%d%b%Y")