开始使用免费开始使用

月份的棘手之处

ymd("2018-01-31") + months(1) 应该返回什么?应该是未来的 30、31 还是 28 天?请试一试。一般来说,lubridate 会返回下个月中相同的"月中日期"(day of the month),但由于 2 月没有第 31 天,lubridate 会返回缺失值 NA

还有替代的加减运算符:%m+%%m-%,它们的行为不同。对于不存在的日期,它们不会返回 NA,而是回退到该月最后一个存在的日期。

您将通过尝试生成本年度每个月最后一天的序列来探索它们的行为。

本练习是课程的一部分

在 R 中处理日期和时间

查看课程

练习说明

我们已将今年 1 月 31 日的日期 jan_31 放入您的工作区。

  • 先创建一个由 1 到 12 个、每个间隔为 1 个月的周期序列。
  • month_seq 加到 jan_31 上。注意哪些月份没有第 31 天时会发生什么。
  • 现在使用 %m+% 运算符,将 month_seq 加到 jan_31 上。
  • 试着使用 %m-% 运算符,用 month_seqjan_31 中相减。

交互式实操练习

通过完成这段示例代码来试试这个练习。

# A sequence of 1 to 12 periods of 1 month
month_seq <- ___

# Add 1 to 12 months to jan_31
___ + ___

# Replace + with %m+%
___ ___ ___

# Replace + with %m-%
___ ___ ___
编辑并运行代码