我有一个简单的问题,但我想知道如何做:我有一数据库和两个输入数据(dmda
和DTest
(:
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)) {
....
}