2016-10-22 3 views
1

I가 다음 dataframedplyr : 돌연변이하여 다음 영업일을 찾으십니까?

time <- seq(from =ymd("2014-02-24"),to= ymd("2014-03-20"), by="days") 
df2 <- data.frame(time) 
df2 <- df2 %>% mutate(day_of_week = wday(time, label = TRUE)) 
> df2 
     time day_of_week 
1 2014-02-24   Mon 
2 2014-02-25  Tues 
3 2014-02-26   Wed 
4 2014-02-27  Thurs 
5 2014-02-28   Fri 
6 2014-03-01   Sat 
7 2014-03-02   Sun 
8 2014-03-03   Mon 
9 2014-03-04  Tues 
10 2014-03-05   Wed 
11 2014-03-06  Thurs 
12 2014-03-07   Fri 
13 2014-03-08   Sat 
14 2014-03-09   Sun 
15 2014-03-10   Mon 
16 2014-03-11  Tues 
17 2014-03-12   Wed 
18 2014-03-13  Thurs 
19 2014-03-14   Fri 
20 2014-03-15   Sat 
21 2014-03-16   Sun 
22 2014-03-17   Mon 
23 2014-03-18  Tues 
24 2014-03-19   Wed 
25 2014-03-20  Thurs 

이 시간에 모든 날짜의 다음 - 영업일 얻을 dplyrmutate를 사용할 수 있습니까? 시간이 금요일 인 경우 다음 월요일에 말하십시오.

lubridate은 영업일을 처리하지 않는 것 같습니다.

감사합니다.

+2

휴일 포함? 가능한 경우 – alistaire

+0

, 예! –

+1

빠르고 더러운 :'df2 %> % mutate (next_biz_day = case_when (. $ day_of_week == 'Sat'~. $ time + 2,. $ day_of_week == '일요일'~ $ time + 1, TRUE ~. $ 시간))',하지만 chron의'is.holiday'와'is.weekday'을보십시오 – alistaire

답변

2
library(bizdays) 

load_rmetrics_calendars(2014) 

mutate(df2, 
     nbd_time=following(time_seq, 'Rmetrics/NERC'), 
     nbd_time=ifelse(nbd_time==time_seq, offset(time_seq, 1, 'Rmetrics/NERC'), nbd_time), 
     nbd_time=as.Date(nbd_time, origin="1970-01-01"), 
     nbddow=wday(nbd_time, label=TRUE)) 

지역별 차이나 특정 캘린더 요구를 설명하는 정확한 캘린더를 정의 /로드 할 수 있습니다.

+0

멋진!. 감사합니다 –

+0

참고 :'library (timeDate)'가 필요합니다. –

관련 문제