R Package bizdays产生意外结果

时间:2019-01-07 17:13:45

标签: r calendar date-arithmetic bizdays

我正在尝试使用bizdays R软件包来计算一周中的工作日数(不包括周末和节假日)。

下面我有一个简单的示例,用于评估2018年12月24日至2018年12月28日之间的工作日,其中24日和25日为假日。

我预计bizdays函数将返回3天(26、27和28日),但是它将返回2天。

更让我困惑的是,如果我在一周内的五个工作日中的每个工作日致电is.bizday,我将得到3 TRUE和2 FALSE(我期望的是)。

有人知道我在做什么错吗?

如果这按预期工作,是否有很好的方法可以使两个日期之间的所有日期都包含在内?

代码如下:

> library(bizdays)
> 
> holidays<-as.Date(c("2018-12-24", "2018-12-25"))
> 
> calfr<-as.Date("2018-01-01")
> calto<-as.Date("2018-12-31")
> 
> fr<-as.Date("2018-12-24")
> to<-as.Date("2018-12-28")
> 
> 
> cal <- create.calendar('mycal',holidays=holidays, weekdays=c("saturday", "sunday"), start.date = calfr, end.date = calto)
> 
> bizdays(fr,to,cal)
[1] 2
> 
> is.bizday(c('2018-12-24','2018-12-25','2018-12-26','2018-12-27','2018-12-28'), cal)
[1] FALSE FALSE  TRUE  TRUE  TRUE

编辑:

我在Calculating Business Days找到了一个不涉及bizdays软件包的答案。

由于bizdays软件包具有令人难以置信的潜力,所以我将保留最初的问题,并且我仍然对为什么它不起作用感到好奇。

1 个答案:

答案 0 :(得分:1)

您应该使用financial=FALSE函数中的create.calendar选项为每次计算增加1天:

cal <- create.calendar('mycal', holidays=holidays, weekdays=c("saturday", "sunday"), start.date = calfr, end.date = calto,
    financial=FALSE)