我想生成两个日期之间所有月份的序列。
我可以使用seq.Date实现此目的:
start <- as.Date("2015-08-01")
end <- as.Date("2015-09-01")
seq <- seq.Date(start, end, by = "month")
[1] "2015-08-01" "2015-09-01"
format(seq, "%Y-%m")
[1] "2015-08" "2015-09"
但是,如果两个日期之间相隔不到一个月,则失败:
start <- as.Date("2015-08-14")
end <- as.Date("2015-09-03")
seq <- seq.Date(start, end, by = "month")
[1] "2015-08-14"
format(seq, "%Y-%m")
[1] "2015-08"
我可以按天处理seq:
unique(format(seq.Date(start, end, by = "day"), "%Y-%m"))
[1] "2015-08" "2015-09"
但是有没有更简单的方法可以做到这一点呢?谢谢。
由于您对日期不感兴趣,因此可以删除日期的那部分,只处理月份。通过添加月份中的任意一天来执行此操作(我使用了下面的第一天,但是只要它们相同,任何一天都可以。)
start <- as.Date("2015-08-14")
end <- as.Date("2015-09-03")
forced_start <- as.Date(paste0(format(start, "%Y-%m"), "-01"))
forced_end <- as.Date(paste0(format(end, "%Y-%m"), "-01"))
seq_dates <- seq.Date(forced_start, forced_end, by = "month")
format(seq_dates, "%Y-%m")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句