簡體   English   中英

如何從 R 中的 Bizdays Package 中排除 bizdays() 中的某些日期

[英]How to exclude certain dates in bizdays() from Bizdays Package in R

在 R 中使用bizdays()時,我試圖排除以下日期:2021-02-15 和 2021-02-16。

我有以下代碼:

library(bizdays)
library(lubridate)

create.calendar(name='MyCalendar', weekdays=c('sunday', 'saturday'),
            adjust.from=adjust.next, adjust.to=adjust.previous, financial=F)
bizdays.options$set(default.calendar='MyCalendar')

現在,當我寫作時,例如:

bizdays(ymd("2021-02-01"), ymd("2021-02-17"))

正如預期的那樣,我得到“13”作為 output。 但是,我試圖排除這兩個日期(2021-02-15 和 2021-02-16)。 鑒於此,當我寫bizdays(ymd("2021-02-01"), ymd("2021-02-17"))時,我想得到“11”作為 output 。

此外,每當我計算 2 月和/或其他月份的任何日期之間的營業日時,我都想排除 2021-02-15 和 2021-02-16 。 因此,當我計算bizdays(ymd("2021-02-01"), ymd("2021-02-28"))我想得到“18”而不是“20”; 當我計算bizdays(ymd("2021-01-23"), ymd("2021-02-28"))我想得到“23”而不是“25”。

使用create.calendar()時,我已經嘗試將這些日期作為假期包含在向量中:

create.calendar(name='MyCalendar', weekdays=c('sunday', 'saturday'),
            adjust.from=adjust.next, adjust.to=adjust.previous, financial=F,
            holidays = c(ymd("2021-02-15"), ymd("2021-02-16")))
bizdays.options$set(default.calendar='MyCalendar')

但是當我寫bizdays(ymd("2021-02-01"), ymd("2021-02-17"))時,我收到以下錯誤:

Error in bizdays.Date(ymd("2021-02-01"), ymd("2021-02-17")) : 
  Given date out of range.

我該如何解決這個問題?

謝謝!

更新:正如@Terru_theTerror 的回復評論中提到的,當我使用create.calendar()時,我仍然沒有找到可重現的替代方案。

我終於解決了。

根據create.calendar() function 的 R 文檔:

arguments start.date 和 end.date 可以設置,但是一旦沒有設置並且設置了假期,start.date 被定義為 min(holidays),end.date 被定義為 max(holidays)。 如果未設置假期 start.date 設置為“1970-01-01”,end.date 設置為“2071-01-01”。

因此,在創建日歷時,確實應該在“假期”向量中包含“2021-02-15”和“2021-02-16”作為日期。 問題是,還必須指定“start.date”和“end.date”arguments,因為它們是默認的:

create.calendar(name='MyCalendar', weekdays=c('sunday', 'saturday'),
                adjust.from=adjust.next, adjust.to=adjust.previous, financial=F,
                holidays = c(ymd("2021-02-15"), ymd("2021-02-16")),
                start.date = ymd("1970-01-01"), end.date = ymd("2071-01-01"))
bizdays.options$set(default.calendar='MyCalendar')

這很完美!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM