Я не могу понять, как написать сложные критерии фильтрации для групп в Tidyverse. Рассмотрим пример кадра данных ниже:
df <- tibble(
a = c(1,1,1,2,2,2,2,3),
b = c(1,2,3,1,4,50,5,3),
c = c("PIZZA", "HAM", NA, "COKE", "LOBSTER", "LOBSTER", NA, NA),
)
Я хочу, чтобы a
была моей переменной группировки, а затем выберите запись с самой большой записью в b
, чтобы запись в c
не была NA
. Желаемый результат:
tibble(
a = c(1, 2, 3),
b = c(2, 50, 3),
c = c("HAM", "LOBSTER", NA)
)
Конечно, я могу сделать
df %>% group_by(a) %>% filter(b == max(b))
, но тогда я не удовлетворяю критерию столбца c
. Некоторые сложности:
- Число записей между группами не согласовано.
- Если запись c равна
NA
для всех записей в группе, выберите наибольшее значение b
запись с NA
.