首页 > 解决方案 > 给定日期向量的下周日期

问题描述

我试图在 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. 它可以工作,但它不是矢量化的,因此有点慢,不适合我的实际目的。

标签: rdate

解决方案


这是做你想做的吗?

 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"

推荐阅读