我想生成两个日期之间所有月份的序列。
我可以用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"
但是,有一种更直接的方法可以解决这个问题吗?感谢。
答案 0 :(得分:2)
由于您对这些日子不感兴趣,您可以废弃该部分日期并仅处理几个月。通过在一个月中的任意一天添加来做到这一点(我已经使用了下面的第一天,但只要它们是相同的,任何一天都会这样做。)
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")