使用lubridate在R中加/减6个月(键合时间)

Mic*_*ton 19 r date lubridate

我期待使用lubridate可靠地加减6个月.

例如,2014年12月31日 - > 2015年6月30日和2014年2月28日 - > 2014年8月31日

等等

问题lubridate是它产生了一个问题12/31/2014.或者,第二个结果是8/28/2014,因为它不仅仅增加了6个月的月份,然后知道哪一天应该最终取决于月份.

有没有办法快速纠正这个?目前,我正在构建一个基本上使用开关的功能,并考虑每个月,但这很长,我也遇到问题.

谢谢!

Hen*_*rik 53

lubridate功能%m+%在这里可能很有用:

在不超过新月的最后一天的日期中添加和减去月份

as.Date("2014-12-31") %m+% months(6)
# [1] "2015-06-30"
Run Code Online (Sandbox Code Playgroud)

要处理第二种情况,您需要使用ceiling_date,然后使用减去一天来舍入到最接近的月份days.

ceiling_date(as.Date("2014-02-28") %m+% months(6), unit = "month") - days(1)
# [1] "2014-08-31"
Run Code Online (Sandbox Code Playgroud)