С помощью dplyr
мы можем group_by
label1
и label2
и фильтровать только те группы, которые имеют all
значения "A", "B" и "C", а затем принимают mean
изэти группы.
library(dplyr)
df %>%
group_by(label1, label2) %>%
filter(all(c("A", "B", "C") %in% factor)) %>%
summarise(avg = mean(value))
# label1 label2 avg
# <fct> <fct> <dbl>
#1 bob ted 3.00
#2 ted carol 4.00
Или, если мы не хотим жестко кодировать эти значения, мы можем получить unique
раньше.
unique_value <- unique(df$factor)
df %>%
group_by(label1, label2) %>%
filter(all(unique_value %in% factor)) %>%
summarise(avg = mean(value))