2017-04-04 13 views
1

Rの日付に日を追加したいとします。土曜日と日曜日と特定の休日を除いて、Rのデータフレームの日付に週末と特定の休日なしの日を追加する

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

は、私は日なし得ることができます。

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

は私が試してみました日付(D列)に次のコードを#days(日]列)を追加したい:私はdatesetを持っていると仮定土曜日と日曜日を考慮して。しかし、特定の休日、すなわち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