【发布时间】:2021-09-08 16:44:20
【问题描述】:
我正在尝试编写一个函数,给定日期start 和整数n,将n 月份添加到日期,然后取结果月份的最后一天。
但是,以下代码会为 n=8+12k 返回 NA,但似乎在其他情况下也有效。
library(lubridate)
start <- ymd("2020-06-29")
n <- 8
floor_date(start + months(n), "month") + months(1) - days(1)
>[1] NA
我想这在一定程度上是由于闰年的存在,但我仍然觉得它令人费解。另外,我在文档中找不到任何关于此的内容。
有人可以解释一下发生了什么,或者建议一种更好的方法来完成这项工作吗?
【问题讨论】:
-
这可能是因为您在 2 月使用
floor_date()声明,而只有 28 天,lubridate在您要求 29 日时给出 NA -
试试这个,
add_with_rollback(start, months(n)) + months(1) - days(3) -
尝试
%m+%,“将 [...] 个月添加到日期,但不超过新月份的最后一天”,如所述,例如这里:Add/subtract 6 months (bond time) in R using lubridate -
谢谢@Henrik!我找不到那个答案