月份的棘手之处
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_seq从jan_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-%
___ ___ ___