【发布时间】:2017-07-03 05:48:24
【问题描述】:
有没有一种有效的方法来生成带有tidyverse 和lubridate 的时间序列向量?我知道当一个使用日期数作为间隔时,两者可以与seq() 一起使用。例如,输入:
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))
错误:持续时间类不兼容(持续时间,数字)。请用
as.duration强制。
我知道可以将 dyears(1) 更改为 365 或 30 如果只需要年或月的近似值,但想知道是否有更聪明的方法来考虑闰年和月。
为了提供更多上下文,我想生成一个日期向量,以便可以自定义ggplot 中的scale_x_date。我不想让waiver() 显示 2000、2003、2006、2009,而是希望情节有所有单独的年份,如果可能的话,甚至每三个月显示一次。
【问题讨论】:
-
seq(today(), today()+dyears(1), by='weeks) -
只需使用
seq.Date。这有点神奇;你可以把它传递给by = '2 weeks',它会解决的。 -
谢谢@GGamba,我没有意识到可以在
by=中为seq()指定“周”和“年” -
@alistaire,谢谢。这也很有效。
-
当您访问
?seq页面时,您应该还点击了指向?seq.Date的链接,在那里答案将变得显而易见。
标签: r date lubridate tidyverse