2013-06-05 19 views
30

Cześć Próbuję uzyskać sekwencję dat z lubridateR kolejność dat z lubridate

To nie działa

seq(ymd('2012-04-07'),ymd('2013-03-22'),by=week(1)) 

polecenie baza

seq(as.Date('2012-04-7'),as.Date('2013-03-22'),'weeks') 

robi, ale chciałbym wiedzieć, czy istnieje elegancki sposób na to, aby zrobić to za pomocą lubridate.

EDIT

proszę ignorować: rozwiązał się więc opuszcza się tylko do potomności. Zadowoleni z tego, jeśli to konieczne, usunięci.

seq(ymd('2012-04-07'),ymd('2013-03-22'),by='weeks') 

załatwia sprawę

+0

dzięki @shujaa mnel dostaliśmy się tam z pomocnym i szczegółowym wyjaśnieniem. –

Odpowiedz

32

ymd jest opakowaniem do analizowania date ciągi i zwraca POSIXct obiekt.

Wystarczy użyć standardowej terminologii opisanej w ?seq.POSIXt (nie lubridate) określenie tygodnie

seq(ymd('2012-04-07'),ymd('2013-03-22'), by = '1 week') 
seq(ymd('2012-04-07'),ymd('2013-03-22'), by = 'weeks') 

wola działa

jak będzie

seq(ymd('2012-04-07'),ymd('2013-03-22'), by = '2 week') 

Można zmusić klasę lubridatePeriod obiekt do difftime, ale wydaje się raczej niepotrzebne ry

seq(ymd('2012-04-07'),ymd('2013-03-22'), by = as.difftime(weeks(1))) 
+0

dzięki @mnel, który działa dobrze. Dobre wytłumaczenie. –