2017-08-07 151 views
0

我正計算兩天之間的工作日。成功地,我從這個問題(Calculate the number of weekdays between 2 dates in R)計算了沒有SaturdaySunday的日子,現在我正試圖將這些代碼實施爲國定假日。我怎樣才能在這裏添加國家假期?計算工作日

我用這個代碼來計算weekdays

Nweekdays <- function(a, b) { 
    sum(!weekdays(seq(a, b, "days")) %in% c("Saturday", "Sunday"))} 
+2

第一步將指定您想要使用哪個國家的假期時間表,對不對?無論如何,timeDate包有幾個函數,如holidayNYSE()和holidayLONDON()可以幫助你:https://cran.r-project.org/web/packages/timeDate/timeDate.pdf –

回答

2

更新你的函數了一點,所以假期可以添加...

Nweekdays <- function(a, b, holidays, weekend) { 
    possible_days <- seq(a, b, "days") 
    # Count all days that are not weekend and 
    # are not holidays 
    sum(!weekdays(possible_days) %in% weekend & !possible_days %in% holidays) 
} 

weekend <- c("Saturday", "Sunday") 
holidays <- as.Date(c("2017-12-31", "2017-12-24", "2017-07-04")) 
Nweekdays(as.Date("2017-08-01"), as.Date("2017-12-31"), holidays, weekend) 
[1] 109 

雖然公曆是非常全球性的,週末和節假日的定義是依賴於國家,地區等。

+0

謝謝!我試圖反映所有行的計算結果,並得到「seq.Date(a,b,」days「)中的錯誤:'from'必須長度爲1」 你知道這個錯誤的任何想法嗎? 起始日期< - as.Date(DF $起始日期) 結束日期< - as.Date(DF $結束日期) DF $ Business_Days < - Nweekdays(開始日期,結束日期,節假日,週末) – Marie

+0

上面的功能做你問什麼在原來的問題。當我不知道'data.frame'的形狀時,很難幫助您。 – snoram