给定日期向量的下一周工作日

时间:2018-12-14 17:57:02

标签: r date

我正在尝试在R中获取日期向量的下一个工作日。我的方法是创建一个工作日向量,然后查找到我拥有的周末日期的日期。问题是,在星期六和某些假期(在我的国家里很多),我最后得到的前一天工作不正常。

这是我的问题的一个示例:

vecDates = as.Date(c("2011-01-11","2011-01-12","2011-01-13","2011-01-14","2011-01-17","2011-01-18",
                      "2011-01-19","2011-01-20","2011-01-21","2011-01-24")) 
testDates = as.Date(c("2011-01-22","2011-01-23"))


findInterval(testDates,vecDates)

两个日期的正确答案应该是10,即“ 2011-01-24”,但我得到9。 但是,我提供了一种解决方案,其中将所有之前的日期都删除到我正在分析的日期,然后使用findInterval。它可以工作,但是没有矢量化,因此有点慢,这对我的实际目的不起作用。

1 个答案:

答案 0 :(得分:1)

这是您想要的吗?

 vecDates = as.Date(c("2011-01-11","2011-01-12",
                     "2011-01-13","2011-01-14",
                     "2011-01-17","2011-01-18",
                     "2011-01-19","2011-01-20",
                     "2011-01-21","2011-01-24")) 
testDates = as.Date(c("2011-01-20","2011-01-22","2011-01-23"))

get_next_biz_day <- function(testdays, bizdays){
   o <- findInterval(testdays, bizdays) + 1
   bizdays[o]
}

get_next_biz_day(testDates, vecDates)
#[1] "2011-01-21" "2011-01-24" "2011-01-24"