每个下一个15日或最后一天的日期顺序[R]

时间:2018-01-11 20:45:47

标签: r date seq

我有开始和结束日期,例如03-05-2014和01-07-2014。我想创建一个代码,以便输出序列,例如每个月的下个月15日或下个月的下一个结束日,在这种情况下,15-05-2014& 15-06-2014,或31-05-2014和31-06-2014。

我知道这可以通过创建日期序列,然后在seq(1st date, 2nd date, by = "day")中识别特定日期(至少对于第一种情况),但我们只是说,由于计算限制,这是不可能的 - 我必须创建它多年以及数百万条需要分组的记录。

那里有解决方法吗?

2 个答案:

答案 0 :(得分:2)

start <- as.Date("2014-05-03")
end <- as.Date("2014-07-01")

library(lubridate)
floor_date(seq(start, end, by = 'month'), unit = "month") + 14
ceiling_date(seq(start, end, by = 'month'), unit = "month")-1

按月排序,并使用floor_date包中的lubridate从月初开始。

答案 1 :(得分:1)

d1 = as.Date("03-05-2014", "%d-%m-%Y")
d2 = as.Date("01-07-2014", "%d-%m-%Y")

library(lubridate)
d1_p = round_date(d1, unit = "month")
d2_p = round_date(d2, unit = "month")    
mydates = seq.Date(d1_p, d2_p, "months")
mydates = mydates[mydates < d2_p]

lapply(mydates, function(x) x + 14:15)
#[[1]]
#[1] "2014-05-15" "2014-05-16"

#[[2]]
#[1] "2014-06-15" "2014-06-16"

ceiling_date(mydates, unit = "month") - 1 
#[1] "2014-05-31" "2014-06-30"