Сделайте так, чтобы код понимал день недели, начиная с выбранной даты

#r

Вопрос:

Приведенный ниже исполняемый код работает нормально, как вы можете видеть. Обратите внимание , что для m , я указываю Week и Code . Ибо Week я указываю это как пятницу , так как я выбрал dmda 16/07, то есть пятницу. Тем не менее, я хотел бы знать, возможно ли, чтобы код понимал, что 16/07-это пятница, и я не указываю m Week == "Friday" в.

 library(dplyr)

df <- structure(
  list(date = c("2021-06-30","2021-06-30","2021-07-07","2021-07-07","2021-07-09","2021-07-09","2021-07-09","2021-07-16"),
       Code = c("ABC","BCD","ABC","BCD","DCE","CDE","DCE","CDE"),
       Week= c("Wednesday","Wednesday","Wednesday","Wednesday","Friday","Friday","Friday","Friday"),
       DR1 = c(4,1,4,3,3,4,3,5)),
  class = "data.frame", row.names = c(NA, -8L))

dmda<-"2021-07-16"
CodeChosse<-"CDE"

m<-df %>%
  group_by(Code,Week) %>%
  summarize(across(starts_with("DR1"), mean))
> m
# A tibble: 4 x 3
# Groups:   Code [4]
  Code  Week        DR1
  <chr> <chr>     <dbl>
1 ABC   Wednesday   4  
2 BCD   Wednesday   2  
3 CDE   Friday      4.5
4 DCE   Friday      3  

m<-subset(m, Week == "Friday" amp; Code == CodeChosse)$DR1
> m
[1] 4.5
 

Ответ №1:

Вы можете использовать match

 m <- subset(m, Week == df$Week[match(dmda, df$date)] amp; Code == CodeChosse)$DR1
m
#[1] 4.5
 

Ответ №2:

Мы можем сделать это с помощью tidyverse

 library(dplyr)
m <- m %>%
        filter(Week %in% df$Week[match(dmda, df$date)], Code == CodeChoose)$DR1
 

Ответ №3:

Будние дни были бы уместны. Попробуй:

 weekdays(as.Date('16-08-2012','%d-%m-%Y'))
 

Вы можете найти больше на:
https://www.rdocumentation.org/packages/base/versions/3.6.2/topics/weekdays