2013-06-05 4 views
30

Привет Я пытаюсь получить последовательность дат с lubridateR последовательность дат с lubridate

Это не работает

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

базовая команда

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

делает, но я хотел бы знать, есть ли элегантный способ сделать это с lubridate.

EDIT

Игнорируйте: решил сам так оставить для потомков только. С удовольствием удаляем это при необходимости.

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

делает трюк

+0

спасибо @shujaa mnel получил там полезное и подробное объяснение. –

ответ

32

ymd обертка для разбора даты строки и возвращает POSIXct объект.

Вам просто нужно использовать стандартную терминологию, описанную в ?seq.POSIXt (не lubridate), чтобы определить

недели
seq(ymd('2012-04-07'),ymd('2013-03-22'), by = '1 week') 
seq(ymd('2012-04-07'),ymd('2013-03-22'), by = 'weeks') 

будет работает

как будет

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

Вы могли принуждать lubridatePeriod класс объект difftime, но это кажется довольно неуместным ry

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

спасибо @mnel, что хорошо работает. Хорошее объяснение. –

Смежные вопросы