我正在尝试使用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软件包具有令人难以置信的潜力,所以我将保留最初的问题,并且我仍然对为什么它不起作用感到好奇。
答案 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)