我正在尝试在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
。它可以工作,但是没有矢量化,因此有点慢,这对我的实际目的不起作用。
答案 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"