我想从给定日期(2015 年 7 月 31 日)向后生成一系列日期。我没有得到四月的最后一天,而是得到五月的第一天,如下所示:
> seq(as.Date('2015-07-31'), as.Date('2014-09-30'), by = '-3 month')
[1] "2015-07-31" "2015-05-01" "2015-01-31" "2014-10-31"
Run Code Online (Sandbox Code Playgroud)
我也尝试传入-quarter该by选项,但出现以下错误:
> seq(as.Date('2015-07-31'), as.Date('2014-09-30'), by = '-quarter')
Error in seq.Date(as.Date("2015-07-31"), as.Date("2014-09-30"), by = "-quarter") :
invalid string for 'by'
Run Code Online (Sandbox Code Playgroud)
虽然我可以检查当月的某一天并在日期被过度调整到错误的月份时进行相应的更正,但我想知道是否存在一个简洁的代码片段来执行上述操作?
一个快速的解决方法是在下个月的第一天减去一个:
seq(as.Date('2015-08-01'), as.Date('2014-10-01'), by = '-3 month') -1
[1] "2015-07-31" "2015-04-30" "2015-01-31" "2014-10-31"
Run Code Online (Sandbox Code Playgroud)