web-dev-qa-db-fra.com

R ajout de jours à une date

J'ai une date à laquelle j'aimerais ajouter des jours afin de trouver une date future.

par exemple, comment pourrais-je trouver la date qui est de 45 jours après le 1/1/2001?

49
screechOwl

Utilisez +

> as.Date("2001-01-01") + 45
[1] "2001-02-15"
82
Andrie

Vous pouvez également utiliser

library(lubridate)
dmy("1/1/2001") + days(45)
25
johannes

Utilisez simplement

 as.Date("2001-01-01") + 45

depuis la base R ou la fonctionnalité de date dans l'un des nombreux packages contribués. Mon RcppBDT package encapsule les fonctionnalités de Boost Date_Time, y compris des choses comme la "date du troisième mercredi" dans un mois donné.

Edit: Et poussé par @Andrie, voici un peu plus de RcppBDT (qui est principalement un cas de test pour Rcpp modules, vraiment).

R> library(RcppBDT)
Loading required package: Rcpp
R> 
R> str(bdt)
Reference class 'Rcpp_date' [package ".GlobalEnv"] with 0 fields
 and 42 methods, of which 31 are possibly relevant:
   addDays, finalize, fromDate, getDate, getDay, getDayOfWeek, getDayOfYear, 
   getEndOfBizWeek, getEndOfMonth, getFirstDayOfWeekAfter,
   getFirstDayOfWeekInMonth, getFirstOfNextMonth, getIMMDate, getJulian, 
   getLastDayOfWeekBefore, getLastDayOfWeekInMonth, getLocalClock, getModJulian,
   getMonth, getNthDayOfWeek, getUTC, getWeekNumber, getYear, initialize, 
   setEndOfBizWeek, setEndOfMonth, setFirstOfNextMonth, setFromLocalClock,
   setFromUTC, setIMMDate, subtractDays
R> bdt$fromDate( as.Date("2001-01-01") )
R> bdt$addDays( 45 )
R> print(bdt)
[1] "2001-02-15"
R> 
10
Dirk Eddelbuettel

En plus de l'ajout simple montré par d'autres, vous pouvez également utiliser seq.Date ou seq.POSIXt pour trouver d'autres incréments ou diminutions (la version POSIXt fait secondes, minutes, heures, etc.):

> seq.Date( Sys.Date(), length=2, by='3 months' )[2]
[1] "2012-07-25"
10
Greg Snow