dplyr:变异并找到下一个工作日?
我有以下数据帧dplyr:变异并找到下一个工作日?,r,datetime,dplyr,lubridate,R,Datetime,Dplyr,Lubridate,我有以下数据帧 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
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
时间
您可以定义/加载精确的日历,以说明地区差异或特定的日历需求。包括节假日?如果可能,可以!快速且肮脏:df2%>%变异(下一个商业日=case\u当(.$day\u of_周=='Sat'.$time+2,.$day\u of_周=='Sun'.$time+1,TRUE~.$time))
,但请参见chron的is.holiday
和is.weekday
或者如果您想要第二天,即使是工作日,也要变异(下一个商业日=(一周中的第二天=='Sat',time+2,time+1))
.Oops,第二个版本应该是df2%>%mutate(下一个工作日=case,当($day\u of_week=='Fri'.$time+3,$day\u of_week=='Sat'.$time+2,TRUE.$time+1))
以正确处理星期五
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))