2017-04-04 79 views
1

除了星期六和星期日以及特定節假日,我想在R中將日期添加到R中。假設我有一個dateset:在R中爲數據框中的日期添加日期,無需週末和某些特定節假日

d <- dmy("25-3-2017","27-3-2017") 
days <- c(3:4) 
data <- data.frame(d,days) 
data 

我想#days(天列)添加到日期(d柱)我曾嘗試下面的代碼:

library(bizdays) 
library(lubridate) 
cal <- Calendar(weekdays=c('sunday', 'saturday')) 
data$f <- offset(d, days, cal) 
data 

我能得到天無考慮週六和週日。但我想排除一個具體的假期,即28-3-2017。我試圖加入這個特定的假期。我試過的代碼如下:

holiday <- dmy("27-7-2016") 
cal <- Calendar(holidays = holiday, 
       start.date = dmy("01-07-2010"), 
       end.date = dmy("01-09-2026"), 
       weekdays=c('sunday', 'saturday')) 
data$f <- offset(d, days, cal) 
data 

但是,如果開始日期本身是一個週末(週六或週日),它就不起作用。即使開始日期恰好是工作日或假期(在列表中給出),我也希望它能夠工作。請幫幫我。謝謝

回答

0

我已經成功地自己制定瞭解決方案。

library("lubridate") 
library("zoo") 
library(bizdays) 
library("chron") 
d <- dmy("8-4-2017","9-4-2017","27-3-2017") 
days <- c(0,1,1) 
data <- data.frame(d,days) 
cal <- create.calendar("Actual", weekdays=c("saturday", "sunday")) 
data$date<-as.Date(ifelse(weekdays(as.Date(data$d))=="Saturday", 
bizdays::offset(data$d+2,data$days, cal),ifelse(weekdays(as.Date(data$d))=="Sunday", 
bizdays::offset(data$d+1, data$days+1, cal),bizdays::offset(data$d, data$days, cal)))) 
data 
相關問題