Как видите, приведенный ниже исполняемый код работает нормально. Обратите внимание, что для 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" & Code == CodeChosse)$DR1
> m
[1] 4.5
r
0
JVieira 9 Окт 2021 в 17:35

2 ответа

Лучший ответ

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

m <- subset(m, Week == df$Week[match(dmda, df$date)] & Code == CodeChosse)$DR1
m
#[1] 4.5
1
Ronak Shah 9 Окт 2021 в 14:39

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

library(dplyr)
m <- m %>%
        filter(Week %in% df$Week[match(dmda, df$date)], Code == CodeChoose)$DR1
0
akrun 9 Окт 2021 в 16:13