R 给定日期向量的下周日期
我试图得到R中日期向量的下一个星期。我的方法是创建一个工作日向量,然后找到周末的日期。问题是,对于周六和一些在我的国家很常见的假期,我最后得到的是前一周不起作用的一天 这是我的问题的一个例子:R 给定日期向量的下周日期,r,date,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
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。它工作,但它不是矢量化的,因此有点慢,不适合我的实际目的 这是你想要的吗
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"
您可能需要查看标识工作日的bizdays包。@iod我已经准备好了一个工作日向量。这不是问题所在。我遇到的问题是将日期移动到下一个工作日FindInterval会在x之前为您提供元素的索引,即间隔数,例如:x同样,如果您在第一个日期之前提供日期,结果将是0@iod这正是我所需要的,同时也理解findInterval和我正在使用它。有人抄下来,然后回答。谢谢way@almost很好,但我每天都会搬家。但在您的示例中,2011-01-20不应该是move,因为它与日期完全匹配。我设法解决了那个问题。