You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中为分组统计表格添加百分比列的方法

解决方法

你遇到的问题是因为colSums()是针对数据框列求和的函数,而这里的Number是一个向量,用sum()直接计算总和就能拿到总人数。以下是几种可行的实现方式:

基础实现

直接在统计完数量后,用sum(Number)获取总人数计算百分比:

ind_and_countries %>%
  group_by(Income_Group) %>%
  summarise(Number = n()) %>%
  arrange(desc(Number)) %>%
  mutate(Percentage = Number / sum(Number) * 100)

明确取消分组(可选)

虽然summarise()默认会取消分组,你也可以用ungroup()明确声明,让逻辑更清晰:

ind_and_countries %>%
  group_by(Income_Group) %>%
  summarise(Number = n()) %>%
  ungroup() %>%
  arrange(desc(Number)) %>%
  mutate(Percentage = Number / sum(Number) * 100)

格式化百分比显示

如果需要直接生成带百分号的格式化字符串,可以使用scales包的percent()函数:

library(scales)

ind_and_countries %>%
  group_by(Income_Group) %>%
  summarise(Number = n()) %>%
  arrange(desc(Number)) %>%
  mutate(Percentage = percent(Number / sum(Number)))

原代码失效原因

colSums(Number)会把向量Number当作单列数据框处理,返回的是一个命名向量(例如Number = 总人数),导致Number / colSums(Number)的结果是一个数据框而非数值,无法正确计算百分比。而sum(Number)直接返回总人数的数值,能完成正确的除法运算。

内容的提问来源于stack exchange,提问作者Georgia Bingham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 11:20:31