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
相关产品推荐
相关产品推荐

