J'essaie de créer des dossiers pour stocker des pulls de données. Je veux étiqueter les dossiers avec le jour de ces données dans le pull.
Ex. Je tire il y a 5 jours des données de mysql je veux nommer le dossier la date d'il y a 5 jours.
MySQL peut facilement gérer l'arithmétique des dates. Je ne sais pas exactement comment R le fait. Dois-je simplement soustraire le nombre approprié de secondes dans POSIXct puis convertir en POSIXlt pour nommer le dossier MM_DD_YYYY?
Ou existe-t-il une meilleure façon?
Il suffit de soustraire un nombre:
> as.Date("2009-10-01")
[1] "2009-10-01"
> as.Date("2009-10-01")-5
[1] "2009-09-26"
Comme la classe Date
n'a que des jours, vous pouvez simplement faire de l'arithmétique de base dessus.
Si vous souhaitez utiliser POSIXlt pour une raison quelconque, vous pouvez utiliser ses emplacements:
> 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"
La réponse dépend probablement du format de votre date, mais voici un exemple utilisant la classe Date
:
dt <- as.Date("2010/02/10")
new.dt <- dt - as.difftime(2, unit="days")
Vous pouvez même jouer avec différentes unités comme des semaines.
Il existe bien sûr une solution lubridate
pour cela:
library(lubridate)
date <- "2009-10-01"
ymd(date) - 5
# [1] "2009-09-26"
est le même que
ymd(date) - days(5)
# [1] "2009-09-26"
D'autres formats d'heure pourraient être:
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"