如何根据输入日期识别工作日



我有一个简单的问题,但我想知道如何做:我有一数据库和两个输入数据(dmdaDTest(:

df1 <- structure(
list(date = c("2021-06-23","2021-06-24","2021-06-30","2021-07-01"),
DTT= c("Hol","Hol","Hol",0),
Week= c("Wednesday","Thursday","Wednesday","Thursday"),
Category = c("ABC","FDE","ABC","FDE"),
DR01 = c(4,1,2,3), DR02= c(4,2,0,2),DR03= c(9,5,0,1),
DR04 = c(5,4,3,2),DR05 = c(5,4,0,2)),
class = "data.frame", row.names = c(NA, -4L))

dmda<-"2021-07-01"
DTest <-"0"
df2<-df1%>%
group_by(Category,Week, DTT) %>%
summarize(across(starts_with("DR"), median),.groups = 'drop')
> df2
# A tibble: 3 x 8
Category Week      DTT    DR01  DR02  DR03  DR04  DR05
<chr>    <chr>     <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 ABC      Wednesday Hol       3     2   4.5     4   2.5
2 FDE      Thursday  0         3     2   1       2   2  
3 FDE      Thursday  Hol       1     2   5       4   4 

如果我想做一个if条件,我可以这样做:

if(any(df2$DTT == DTest & df2$Week == "Thursday" , na.rm = TRUE)) {
....
}

现在我的疑问是,我不想使用df2$Week == "Thursday",而是使用已定义的dmda。换句话说,从我在dmda中选择的日期开始,代码有没有办法识别一周中的哪一天?

我们可以将"dmda"转换为Date类,并使用format(%A(提取工作日-这在?strptime文档中指定

%A-当前区域设置中的完整工作日名称。(也与输入的缩写名称相匹配。(

wkday <- format(as.Date(dmda), "%A")
wkday
[1] "Thursday"

然后在CCD_ 11环路中使用

if(any(df2$DTT == DTest & df2$Week == wkday , na.rm = TRUE)) {
....
}

最新更新