Como restar / agregar días desde / hasta una fecha?
Pregunta
Estoy intentando crear carpetas para almacenar los datos tirones. Quiero marcar las carpetas con el día de que los datos de la atracción.
Ex. Me tire Hace 5 días a partir de datos de MySQL quiero a nombre de la carpeta de la fecha de hace 5 días.
MySQL puede manejar fácilmente la aritmética de fechas. No estoy seguro exactamente cómo R lo hace. ¿Debo restar el número apropiado de segundos en POSIXct y luego convertir a POSIXlt a nombre de la carpeta MM_DD_YYYY?
O hay una manera mejor?
Solución
Sólo resta un número:
> as.Date("2009-10-01")
[1] "2009-10-01"
> as.Date("2009-10-01")-5
[1] "2009-09-26"
Desde la clase Date
solamente tiene días, sólo puede hacer operaciones aritméticas básicas en él.
Si desea utilizar POSIXlt por alguna razón, entonces se puede utilizar es ranuras:
> a <- as.POSIXlt("2009-10-04")
> names(unclass(as.POSIXlt("2009-10-04")))
[1] "sec" "min" "hour" "mday" "mon" "year" "wday" "yday" "isdst"
> a$mday <- a$mday - 6
> a
[1] "2009-09-28 EDT"
Otros consejos
La respuesta probablemente depende de qué formato de la fecha está en, pero aquí hay un ejemplo usando la clase Date
:
dt <- as.Date("2010/02/10")
new.dt <- dt - as.difftime(2, unit="days")
Puede incluso jugar con diferentes unidades, como semanas.
Por supuesto, hay una solución para este lubridate
:
library(lubridate)
date <- "2009-10-01"
ymd(date) - 5
# [1] "2009-09-26"
es el mismo que
ymd(date) - days(5)
# [1] "2009-09-26"
Otros formatos de tiempo podrían ser:
ymd(date) - months(5)
# [1] "2009-05-01"
ymd(date) - years(5)
# [1] "2004-10-01"
ymd(date) - years(1) - months(2) - days(3)
# [1] "2008-07-29"