代码之家  ›  专栏  ›  技术社区  ›  Alejandro Andrade

给定日期矢量的下周

  •  0
  • Alejandro Andrade  · 技术社区  · 6 年前

    我试图得到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 回复  |  直到 6 年前
        1
  •  1
  •   Anders Ellern Bilgrau    6 年前

    这是你想要的吗?

     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"