使用 R 和 lubridate 生成时间序列

Generate a sequence of time using R and lubridate

有没有一种有效的方法可以用tidyverselubridate生成时间序列向量?我知道当一个使用日期数作为间隔时,两者可以与 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"

但是,有什么方法可以使它工作个月年[=38= 】 还有吗?也许类似于下面的代码,我认为它可以工作但没有:

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) 更改为 36530,但想知道是否有更聪明的方法考虑闰年和闰月。


为了提供更多上下文,我想生成一个日期向量,以便我可以自定义 ggplot 中的 scale_x_date。我不想让 waiver() 显示 2000、2003、2006、2009,而是希望情节包含所有单独的年份,如果可能的话甚至每三个月一次。

您可以尝试使用 seq.Date():

seq.Date(from=as.Date("2000-01-01"), to=as.Date("2010-01-01"), by="month")

或:

seq(as.Date("2000/1/1"), by = "month", length.out = 12)