How to convert 2nd and 4th saturday's as holiday

i have the date variable.
using that i need to create one more variable like status(workingday and holiday).
which means that every Sunday, 2nd and 4th saturdays would be holidays.

5/29/2019 4 Wednesday workingday
5/30/2019 5 Thursday workingday
5/31/2019 6 Friday workingday
6/1/2019 7 Saturday workingday
6/2/2019 1 Sunday holiday
6/3/2019 2 Monday workingday

Please help me in this guys.

thanks

Here is one possibility:

library(lubridate)
#> 
#> Attaching package: 'lubridate'
#> The following object is masked from 'package:base':
#> 
#>     date
suppressPackageStartupMessages(library(dplyr))
df <- data.frame(Date = seq.Date(ymd("2019-01-01"), ymd("2019-12-31"), 1))
df <- df %>% mutate(DayName = wday(Date, label = TRUE), DayNum = wday(Date))
head(df)
#>         Date DayName DayNum
#> 1 2019-01-01     Tue      3
#> 2 2019-01-02     Wed      4
#> 3 2019-01-03     Thu      5
#> 4 2019-01-04     Fri      6
#> 5 2019-01-05     Sat      7
#> 6 2019-01-06     Sun      1
df <- df %>% mutate(Workday = ifelse(DayNum == 1 | 
                                       (DayNum == 7 & mday(Date) %in% c(8:14, 22:28)), 
                                     "Holiday", "Workday"))
head(df)
#>         Date DayName DayNum Workday
#> 1 2019-01-01     Tue      3 Workday
#> 2 2019-01-02     Wed      4 Workday
#> 3 2019-01-03     Thu      5 Workday
#> 4 2019-01-04     Fri      6 Workday
#> 5 2019-01-05     Sat      7 Workday
#> 6 2019-01-06     Sun      1 Holiday
filter(df, Workday == "Holiday", DayNum == 7) #Show Sat. that are Holiday
#>          Date DayName DayNum Workday
#> 1  2019-01-12     Sat      7 Holiday
#> 2  2019-01-26     Sat      7 Holiday
#> 3  2019-02-09     Sat      7 Holiday
#> 4  2019-02-23     Sat      7 Holiday
#> 5  2019-03-09     Sat      7 Holiday
#> 6  2019-03-23     Sat      7 Holiday
#> 7  2019-04-13     Sat      7 Holiday
#> 8  2019-04-27     Sat      7 Holiday
#> 9  2019-05-11     Sat      7 Holiday
#> 10 2019-05-25     Sat      7 Holiday
#> 11 2019-06-08     Sat      7 Holiday
#> 12 2019-06-22     Sat      7 Holiday
#> 13 2019-07-13     Sat      7 Holiday
#> 14 2019-07-27     Sat      7 Holiday
#> 15 2019-08-10     Sat      7 Holiday
#> 16 2019-08-24     Sat      7 Holiday
#> 17 2019-09-14     Sat      7 Holiday
#> 18 2019-09-28     Sat      7 Holiday
#> 19 2019-10-12     Sat      7 Holiday
#> 20 2019-10-26     Sat      7 Holiday
#> 21 2019-11-09     Sat      7 Holiday
#> 22 2019-11-23     Sat      7 Holiday
#> 23 2019-12-14     Sat      7 Holiday
#> 24 2019-12-28     Sat      7 Holiday

Created on 2019-05-30 by the reprex package (v0.2.1)

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.