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

R使用dplyr分组统计体重均值时不同性别组结果相同如何解决

异常原因

  • dplyr管道语法使用错误:通过%>%将数据框传入下游函数后,group_by()、summarise()会默认在传入的数据框的环境中检索字段,不需要额外加df$前缀。你在代码中写的df$gender、mean(df$weight)会直接提取整个df的全量列进行计算,不会根据分组筛选对应子集,因此两个分组得到的都是全局体重均值,结果完全相同。
  • 代码存在不规范风险:attach(Kid.weights)写法容易引发命名冲突,且数据集名拼写错误(原数据集名称为小写开头的kid.weights,此处写为大写开头的Kid.weights),虽然此处未触发报错,但会提升后续代码的出错概率。

修正方案

你需要移除管道函数内的df$前缀,同时可以直接通过dplyr的字段操作完成单位转换和分组统计,不需要先做子集裁剪,也不需要使用attach(),完整可运行代码如下:

library("UsingR")
library("dplyr")
data("kid.weights")

# 取前6行数据+分组统计,若需要统计全量数据集,删除[1:6,]即可
df <- kid.weights[1:6,] %>% 
  mutate(Kg = weight * 0.453592,
         M = height * 0.0254) %>% 
  group_by(gender) %>% 
  summarise(
    kg_mean = mean(Kg),
    kg_median = median(Kg)
  )

# 查看分组统计结果
df

运行后即可得到不同性别分组对应的千克体重的均值、中位数,不会再出现两个分组结果一致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:36:05