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

R语言使用dplyr计算百分比时结果全为100的原因及解决方法

问题原因

你代码的问题出在group_by(TA_code, TA_name)分组逻辑上:
按TA_code、TA_name两个唯一字段分组后,每个分组仅对应单条地区数据,此时sum(Crashes, na.rm = T)计算的是当前分组内的事故数总和,也就是单条数据自身的Crashes值,分子分母完全一致,因此得到的占比永远为100%。

正确实现方案

如果仅需要计算各地区事故数占全量总事故数的百分比,直接去掉不必要的分组语句即可,修改后代码如下:

library(dplyr) # 数据处理依赖

crash_stats_TA <- crash_stats_TA %>%
  mutate(crashes_perc = round(Crashes/sum(Crashes, na.rm = TRUE)*100,2))

如果你确实需要先按地区分组做其他计算,可以在计算占比时通过.$主动调用全表的Crashes列,不受当前分组限制,写法参考:

library(dplyr)

crash_stats_TA <- crash_stats_TA %>%
  group_by(TA_code, TA_name) %>%
  # 此处可添加其他分组计算逻辑
  mutate(
    # 其他分组衍生字段...
    crashes_perc = round(Crashes/sum(.$Crashes, na.rm = TRUE)*100,2)
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:24:04