2016-02-04 99 views
0

从2013-09-30(9月的最后一天)到2013-10-31(10月的最后一天),我无法使用lubridate增加1个月。日期增加1个月

文档中提供的示例效果很好:

# get a vector of months (last day of the month) 
vct_dates <- ymd("2013-01-31") %m+% months(0:11) 

下面给出了2013年10月31日如预期:

vct_dates[10] 

而且,下面给出2013年9月30日:

vct_dates[9] 

但是,当我尝试增加2013-09-30一个月,我得到了错误的答案:

# should be 2013-10-31 but is 2013-10-30 
vct_dates[9] %m+% months(1) 

任何想法......?

+0

“但是,当我尝试增加2013-09-30一个月时,我得到了错误的答案”。其实,它给了你正确的答案。 –

+0

好的,谢谢PL ...“我收到了与我期待的不同的答案” – markthekoala

回答

1

什么:

vct_dates <- (ymd("2013-09-30") + days(1)) %m+% months(0:11) + days(-1) 
1

无论[R也不lubridate有“最后一天在本月的概念。但是,你可以欺骗它:取下个月的第一天,增量由一个月 - 和减去一天:

R> seq(as.Date("2016-10-01"), by="1 month", len=2)-1 
[1] "2016-09-30" "2016-10-31" 
R> 

这个工作在基础R没有任何的附加软件包。