【发布时间】:2019-05-16 00:26:13
【问题描述】:
我试图在 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。它可以工作,但它不是矢量化的,因此有点慢,不适合我的实际目的。
【问题讨论】:
-
您可能需要查看包
bizdays标识工作日。 -
@iod 我已经准备好有一个工作日向量。那不是问题。我遇到的问题是将日期移到下一个工作日
-
findInterval为您提供 x 之前元素的索引(即间隔数),例如:x<-c(1,5,6,8); findInterval(7,x)为您提供 3(即 6 和 8 之间的间隔)。如果您想要在区间末尾的元素索引,只需在findInterval的结果中加 1。 -
(同样,如果你在第一次约会之前给出一个日期,结果将为0)
-
@iod 这正是我所需要的(也理解
findInterval)以及我正在使用它。有人只是复制并使其成为答案。感谢任何方式