假设我有此数据集:
df <- data.frame(c('a', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b', 'b'),
c('c', 'c', 'd', 'e', 'f', 'c', 'e', 'f', 'f', 'f', 'g', 'h', 'f')
) %>% setNames(c('type', 'value'))
type value
1 a c
2 a c
3 a d
4 a e
5 a f
6 a c
7 b e
8 b f
9 b f
10 b f
11 b g
12 b h
13 b f
我想执行以下某种命令:
df %>% group_by(type) %>%
summarise_all(funs(largest_group_size))
理想情况下,这将产生一个表,其中a和b的任何值的数量最多。
type largest_group_size
1 a 3
2 b 4
此表将具有:
理想情况下,我想更进一步,并按类型计算最大的群体占整体的百分比。所以(largest_group_size / n())。
答案 0 :(得分:2)
分两个group_by
步骤:
df %>%
group_by(type, value) %>%
summarise(groups = n()) %>%
group_by(type) %>%
summarise(largest_group = max(groups),
as_percentage = largest_group / sum(groups))
这给出了:
type largest_group as_percentage
<fct> <dbl> <dbl>
1 a 3 0.5
2 b 4 0.571
可能有一种更有效的方法,但这就是我急着要这样做的方式。