R语言分组计算赛事粉丝占比:分母求和难题
问题解决
你的代码存在两个关键错误,修正后即可实现需求:
错误分析
- 列名误用:数据框中存储粉丝数的列是
number,但你代码里写的是n,导致无法正确取值 - 分母逻辑错误:
game==2+game==1的运算顺序是先将game==1转为布尔值(1或0)后加2,再判断game是否等于该结果,完全不是你想要的“赛事1+赛事2粉丝数求和”的逻辑
正确代码写法
写法一(简洁版,利用每组仅含game1和game2各一行的特点)
soccer %>% group_by(A) %>% summarise(ratio = (number[game == 1] / sum(number)) * 100)
写法二(明确指定game1和game2的数值相加)
soccer %>% group_by(A) %>% summarise(ratio = (number[game == 1] / (number[game == 1] + number[game == 2])) * 100)
写法三(更严谨,适配组内可能有重复game的情况)
如果后续数据中同一组可能出现多个game1或game2的记录,可以先分别求和再计算比例:
soccer %>% group_by(A) %>% summarise( game1_total = sum(number[game == 1]), total_fans = sum(number), ratio = (game1_total / total_fans) * 100 ) %>% select(A, ratio) # 可选,仅保留需要的列
运行后会得到每个分组下赛事1粉丝数占总数的百分比结果。
内容的提问来源于stack exchange,提问作者Amyly
相关产品推荐
相关产品推荐

