2013-08-23 12 views
5

Wenn Sie den Operator "+" verwenden, um ein Datum (oder Datum/Uhrzeit) zu erhöhen, wie kann ich angeben, dass das Inkrement in Tagen (oder Monaten oder Wochen oder Jahren) liegt?Inkrementieren eines Datums um einen bestimmten Zeitraum

> Sys.Date() 
[1] "2013-08-23" 
> Sys.Date() + 1 
[1] "2013-08-24" 
> ISOdate(2013,8,23) 
[1] "2013-08-23 12:00:00 GMT" 
> ISOdate(2013,8,23) + 1 
[1] "2013-08-23 12:00:01 GMT" 
+0

Sie eine Funktion erstellen können ... 1 Woche = 7 Tage und so weiter. – Fernando

+0

Wie können Sie das auf Monate ausdehnen, mit einer anderen Anzahl von Tagen? – gcbenison

+0

Ja, ich gab eine bessere Antwort. – Fernando

Antwort

6

Verwenden lubridate::days

> require(lubridate) 
> Sys.Date() 
[1] "2013-08-23" 
> Sys.Date() + days(1) 
[1] "2013-08-24" 
> ISOdate(2013, 8, 23) 
[1] "2013-08-23 12:00:00 GMT" 
> ISOdate(2013, 8, 23) + days(1) 
[1] "2013-08-24 12:00:00 GMT" 

Mit lubridate, können Sie auch years() verwenden, seconds() usw. oder Ihre eigenen duration definieren.

6

Sie könnten ff einige grundlegende Berechnungen verwenden:

today = Sys.Date() 
fiveWeeksAhead = tail(seq(today, by = 'week', length = 5), 1) 

Oder ein Paket wie lubridate verwenden, wenn Sie erweiterte Funktionen benötigen.

+1

Ich akzeptiere die "lubridate" Antwort, weil sie am prägnantesten ist, aber ich mag den "seq" Ansatz, weil es nur Kern R ist. Danke! – gcbenison

+2

Danke. Es ist immer besser, externe Abhängigkeiten zu vermeiden, * es sei denn * du * brauchst * es wirklich. – Fernando

+1

Es ist am besten, externe Abhängigkeiten zu vermeiden, es sei denn, es wird Ihnen Zeit gespart. – hadley

1

Sie lubridate verwenden könnte Tage, Wochen, Monate, hinzuzufügen ... Hier ist ein Beispiel ein Monat der Zugabe, und eine Woche:

library(lubridate) 
d <- as.Date('2004-01-01') 
month(d) <- month(d) + 1 

#[1] "2004-02-01" 

week(d) <- week(d) + 1 

#[1] "2004-02-08" 
+1

Oder Sie können 'd <- d + Monate (1)' hinzufügen, um einen Monat hinzuzufügen und 'd <- d + Wochen (1)', um eine Woche mit 'lubridate' hinzuzufügen. – ialm

Verwandte Themen