Мне нужно количество и пропорции (всех элементов) каждой группы в кадре данных (после фильтрации). Этот код дает желаемый результат:
library(dplyr)
df <- data_frame(id = sample(letters[1:3], 100, replace = TRUE),
value = rnorm(100))
summary <- filter(df, value > 0) %>%
group_by(id) %>%
summarize(count = n()) %>%
ungroup() %>%
mutate(proportion = count / sum(count))
> summary
# A tibble: 3 x 3
id count proportion
<chr> <int> <dbl>
1 a 17 0.3695652
2 b 13 0.2826087
3 c 16 0.3478261
Есть ли элегантное решение, позволяющее избежать ungroup()
и вторых summarize()
шагов. Что-то вроде:
summary <- filter(df, value > 0) %>%
group_by(id) %>%
summarize(count = n(),
proportion = n() / [?TOTAL_ROWS()?])
Мне не удалось найти такую функцию в документации, но мне, должно быть, не хватает чего-то очевидного. Спасибо!