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

R语言ddply分组统计异常:求各帮派Mass的均值、最值

解决帮派体重统计结果一致的问题

嘿,我一眼就瞅出问题所在啦!

你提前把mass <- Gangs$Mass_kg赋值成了整个数据集的Mass_kg列,这是一个全局向量。当ddply按Gang_affiliation分组计算时,summarise里调用的min(mass)、mean(mass)并没有使用每个帮派分组后的体重子集,而是一直用整个列的统计值,所以所有帮派的结果才会完全相同。

两种修正方案

方案1:直接引用原数据列(最简洁推荐)

删掉提前赋值的mass变量,直接在summarise里用数据框的Mass_kg列,ddply会自动按分组处理每个帮派的体重数据:

# 直接使用原数据列,自动分组计算
mass.summary <- ddply(Gangs, ~Gang_affiliation, summarise, 
                      minimum = min(Mass_kg, na.rm = TRUE), 
                      mean = mean(Mass_kg, na.rm = TRUE), 
                      maximum = max(Mass_kg, na.rm = TRUE))

小贴士:加上na.rm = TRUE能避免数据里有缺失值时计算报错,要是你的数据没缺失值可以省略,但加上更稳妥~

方案2:在分组内定义局部变量

如果你非要用mass这个变量名,可以在ddply的分组函数里先给每个组单独赋值mass,这样每个帮派都有自己的体重子集:

# 先在分组内定义局部mass变量,再计算统计值
mass.summary <- ddply(Gangs, ~Gang_affiliation, function(group_df) {
  mass <- group_df$Mass_kg
  summarise(group_df, 
            minimum = min(mass, na.rm = TRUE), 
            mean = mean(mass, na.rm = TRUE), 
            maximum = max(mass, na.rm = TRUE))
})

效果验证

运行修正后的代码,你就能得到每个帮派对应的正确体重最小值、均值和最大值啦,不会再出现所有结果一致的情况~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:32:01