【问题标题】:R bizdays trouble making it workR bizdays 无法正常工作
【发布时间】:2016-07-04 22:02:47
【问题描述】:

我想使用 bizdays 包生成一个向量,其中包含两个日期之间的巴士日。

fer = as.data.frame(as.Date(fer[1:938]))

#Define default calendar
bizdays.options$set(default.calendar=fer)

dt1 = as.Date(Sys.Date())
dt2 = as.Date(Sys.Date()-(365*10)) #sample 10 year window

#Create date vector
datas = bizseq(dt2, dt1)

我收到此错误:“bizseq.Date(dt2, dt1) 中的错误:给定日期超出范围。” bizdays 等任何函数的行为都相同。

有什么想法吗?

【问题讨论】:

    标签: r date bizdays


    【解决方案1】:

    我遇到了类似的问题,但无法将接受的答案应用于我的案例。对我有用的是确保向量holidays 中的第一个和最后一个假期至少涵盖(或超过)提供给bizdays() 的日期范围:

       library(bizdays)
    

    这个作品(from_dateto_date都在holidays提供的第一个和最后一个假期内):

       holidays <- c("2016-08-10", "2016-08-13")
    
        from_date <- "2016-08-11"
        to_date <- "2016-08-12"
    
        cal <- Calendar(holidays, weekdays=c('sunday', 'saturday'))
        bizdays(from_date, to_date, cal)
    
        #1
    

    这不起作用(to_date 位于holidays 的最后一个假期之外):

        holidays <- c("2016-08-10", "2016-08-11")
    
        from_date <- "2016-08-11"
        to_date <- "2016-08-12"
    
        cal <- Calendar(holidays, weekdays=c('sunday', 'saturday'))
        bizdays(from_date, to_date, cal)
    
       # Error in bizdays.Date(from, to, cal) : Given date out of range.
    

    【讨论】:

      【解决方案2】:

      如果fer是假期,你可以试试:

      bizdays.options$set(default.calendar=Calendar(holidays=fer))
      

      【讨论】:

      • Tks HubertL,您的解决方案奏效了!还必须设置周末:bizdays.options$set(default.calendar=Calendar(holidays=fer, weekdays=c("saturday", "sunday")))
      猜你喜欢
      • 2018-01-16
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 2016-12-01
      • 2021-10-31
      • 2018-01-10
      • 2020-06-30
      • 1970-01-01
      相关资源
      最近更新 更多