2013-08-23 13 views
5

Bir tarihi (veya tarih-saat) artırmak için "+" işlecini kullanırken, artışın günler (ya da aylar ya da haftalar ya da yıllar) içinde olduğunu nasıl belirleyebilirim? lubridate ileBir süreye kadar bir tarih artışı

> 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

... 1 hafta = 7 günler vb. – Fernando

+0

Bunu, birkaç güne kadar aylara nasıl genişletebilirsiniz? – gcbenison

+0

Evet, daha iyi bir cevap verdim. – Fernando

cevap

6

Kullanım 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" 

, ayrıca vb years(), seconds() kullanmak veya kendi duration tanımlayabilirsiniz.

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

Yoksa daha gelişmiş işlevleri gerekiyorsa lubridate gibi bir paket kullanın:

6

Bazı temel hesaplamalar için seq kullanabilirsiniz.

+1

En rahatsız edici olduğu için "lubridate" cevabını kabul etmek, ama kesinlikle "seq" yaklaşımını beğeniyorum, çünkü sadece çekirdek. – gcbenison

+2

Teşekkürler. Dış bağımlılıkları önlemek her zaman daha iyidir, * siz * gerçekten * buna * gerek yoktur. – Fernando

+1

Size zaman kaybetmeden, harici bağımlılıkları önlemek en iyisidir. – hadley

1

Sen günler, haftalar, aylar eklemek için lubridate kullanabilirsiniz ... İşte bir ay ekleyerek bir örnektir ve bir hafta: Bir fonksiyon oluşturabilir

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

Ya da 'lubridate' ile bir hafta eklemek için' d <- d + ay (1) 'yaparak bir ay ve' d <- d + hafta (1) 'yapabilirsiniz. – ialm

İlgili konular