时间序列、lubridate 和 seq 函数

Time series, lubridate, and the seq function

我刚刚开始使用 lubridate 包和 R 中的日期进行冒险。一开始我对某些行为感到惊讶。因为当我这样做时 seq(ymd("2021-01-01"), ymd("2021-01-04"), ddays(1)) 我只得到一个约会对象 [1]" 2021-01-01"。但是当我这样做时 seq(ymd_h("2021-01-01 00"), ymd_h("2021-01-04 00"), ddays(1)) 我得到了更多的预期结果,即四个日期 "2021- 01-01 UTC" "2021-01-02 UTC" "2021-01-03 UTC" "2021-01-04 UTC"。 我承认这让我很吃惊。 我将非常感谢用简单的语言解释为什么会这样。

马上第二个问题。是否有像 seq 这样的函数可以正确理解 lubridate 包中的 d... 函数(ddays、dhours、dminutes 等)?

seq 不是 lubridate 包的一部分,不理解 d... 函数。
ymd returns 一个日期,所以当你调用 seq 时,你使用的是 seq.Date.
你想要 seq(ymd("2021-01-01"), ymd("2021-01-04"), "days")

ymd_h returns 一个 POSIXct 对象,所以 seq 使用 seq.POSIXct.
您再次想要 seq(ymd_h("2021-01-01"), ymd_h("2021-01-04"), "days"),但现在结果是一个 POSIXct 向量。

查看 seq.Date 和 seq.POSIXct 的帮助,了解它们的区别。

新的 clock 包有许多用于日期操作的好函数,包括一个名为 date_seq 的函数,您可能会发现它很有用。