[英]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.