我期待使用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)