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

R语言dplyr分组占比计算求助:按Person、Year分组计算百分比失败

解决按Person+Year分组计算变量占比的问题

原代码的问题出在两点:

  • 变量名大小写不匹配:你定义的计数列是Count(大写C),但计算占比时误用了小写的count,导致引用错误
  • 流程冗余:没必要多次分组再加distinct(),用dplyr::count()一步完成分组计数更高效

修正后的代码如下:

library(dplyr)
library(formattable)

# 替换成你的实际数据框名称
your_data %>%
  # 按Person、Year、Variable分组统计数量,命名为Count
  dplyr::count(Person, Year, Variable, name = "Count") %>%
  # 切换到Person+Year分组,计算组内占比
  dplyr::group_by(Person, Year) %>%
  dplyr::mutate(Percentage = formattable::percent(Count / sum(Count), digits = 1)) %>%
  # 保留需要的列(建议保留Person,方便对应分组)
  dplyr::select(Person, Year, Variable, Count, Percentage)

代码说明:

  • count()一步完成了原代码中group_by(Person, Year, Variable) + mutate(Count = n())的工作,直接得到每组的计数
  • 切换到Person+Year分组后,sum(Count)会自动计算当前Person+Year组的总数量,再用每组的Count除以这个总和得到占比
  • 最终结果里每个Person+Year组的百分比总和会是100%,符合你的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:59:59