3

我正在尝试使用 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

编辑:

我在计算工作日找到了一个不涉及 bizdays 包的答案。

我把最初的问题留了下来,因为 bizdays 包具有令人难以置信的潜力,我仍然很好奇它为什么不起作用。

4

1 回答 1

2

您应该使用函数financial=FALSE内部的选项create.calendar为每个计算添加 1 天:

cal <- create.calendar('mycal', holidays=holidays, weekdays=c("saturday", "sunday"), start.date = calfr, end.date = calto,
    financial=FALSE)
于 2019-07-27T11:03:42.817 回答