Существует ли эффективный способ генерации вектора временной последовательности с tidyverse
и lubridate
? Я знаю, что они могут работать с seq()
, если использовать число дат как интервал. Например, при входе:Создать последовательность времени с использованием R и lubridate
seq(today(), today()+dyears(1), 60)
можно получить ряд дат с 60-дневным интервалом
"2017-02-14" "2017-04-15" "2017-06-14" "2017-08-13" "2017-10-12" "2017-12-11" "2018-02-09"
Однако, есть ли способ, что это может работать на недель, месяцев и лет также? Возможно, что-то похожее на приведенный ниже код, который я думал, будет работать, но не:
seq(as_date(2000-01-01), as_date(2017-01-01), dyears(1))
Error: Incompatible duration classes (Duration, numeric). Please coerce with
as.duration
.
Я знаю, что можно изменить dyears(1)
в 365
или 30
если одна нужна только приближение за год или месяц, но задавался вопросом, есть ли более разумные способы учета високосных лет и месяцев.
Чтобы обеспечить больше контекста, я хотел бы, чтобы сгенерировать вектор даты, так что я могу настроить scale_x_date
в ggplot
. Вместо того, чтобы показывать дисплей waiver()
2000, 2003, 2006, 2009, я хочу, чтобы сюжет имел все отдельные годы или даже каждый трехмесячный период, если это было возможно.
'SEQ (сегодня(), сегодня() + dyears (1), по неделям = ') ' – GGamba
Просто используйте' seq.Date'. Это немного волшебство; вы можете передать его 'by = '2 weeks'', и это выяснит. – alistaire
Спасибо, @GGamba, я не понимал, что можно указать «недели» и «годы» в 'by =' для 'seq()' –