【问题标题】:How recognize weekday depending on entry date如何根据入境日期识别工作日
【发布时间】:2022-01-23 03:35:13
【问题描述】:

我有一个简单的问题,但我想知道怎么做:我有一个数据库和两个输入数据(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 中选择的日期开始,有什么方法可以让代码识别它是星期几?

【问题讨论】:

    标签: r


    【解决方案1】:

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

    %A - 当前语言环境中的完整工作日名称。 (也匹配输入的缩写名称。)

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

    然后在 if 循环中使用它

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

    【讨论】:

    • 这是一个很好的解决方案@akrun。但是我有一个简短的问题,因为在我拥有的另一个数据库中,我在 Week 中没有 Thursday 在系统中,而是 Thursday day。这是他们做到的一种方式。然后它不会识别,因为系统中使用了Thursday,而我的数据库中是Thursday day,对吧?不知道有没有办法解决这个问题?
    • @Antonio 如果是这种情况,您可以使用wkday &lt;- sub("\\s+.*", "", format(as.Date(dmda), "%A")),即在format 之后,只需删除带有sub 的任何字符后面的空格,现在它应该与@ 匹配987654335@ 或其他选项是grepl
    猜你喜欢
    • 2018-12-05
    • 2021-12-09
    • 2013-03-22
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多