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?

¿Fue útil?

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"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top