Comment soustraire / append des jours de / à une date?

J’essaie de créer des dossiers pour stocker des 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 de secondes approprié 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 ne contient que des jours, vous pouvez simplement faire de l’arithmétique de base.

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 d’utilisation de 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" 

Les autres formats de temps 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"