为什么这两个值都显示为 100%?

Why are both of these values showing up as 100%?

我正在尝试制作饼图,第一步是计算每个部分的实际百分比份额。我以为我应该可以使用 mutate 但它给了我 100% 的全面:

 starwars %>%
  group_by(gender) %>%
  count() %>%
  mutate(percent = n / sum(n) * 100) 

我希望看到计算出的百分比,如下所示:

gender          n     percent
female          19      22
hermaphrodite   1       1
male            62      71
none            2       2
NA              3       3 

但是每一行似乎都是 100%:

gender          n     percent
female          19      100
hermaphrodite   1       100
male            62      100
none            2       100
NA              3       100

我需要在这里更改什么才能得到 n 之和的百分比?

您需要先取消分组,否则您将进行 sum(n) 分组。

starwars %>%
  group_by(gender) %>%
  count() %>% ungroup() %>%
  mutate(percent = n / sum(n) * 100) 

如评论中所述,替代结构为:

starwars %>% 
  group_by(gender) %>% 
  summarise(n=n(), percent = n / nrow(.) * 100)  

严格来说,mutate 将百分比添加到原始小标题的每一行。 summarize 给出请求的摘要。