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

如何使用dplyr计算双分组变量的加权均值

解决方法:用dplyr计算按cyl分组的mpg加权均值

嘿,这事儿其实用dplyr就能轻松搞定,甚至可以一步到位,不用先单独生成Count数据框再绕弯子~

方法一:一步完成(更高效推荐)

直接在原始数据集上操作,先按cyl和mpg分组统计次数,再保留cyl分组计算加权均值:

library(dplyr)

mtcars %>%
  group_by(cyl, mpg) %>%
  summarize(Count = n(), .groups = "drop_last") %>%  # 只移除最内层的mpg分组,保留cyl分组
  summarize(weighted_mpg = weighted.mean(mpg, w = Count))

这里的.groups = "drop_last"参数很关键,它会在第一次summarize后,只去掉最内层的mpg分组,保留cyl作为后续计算的分组依据,这样weighted.mean就能直接按每个cyl类别计算加权均值了。

方法二:基于你已生成的Count数据框

如果你已经有了之前生成的含cyl、mpg、Count的数据框(比如命名为count_df),可以直接按cyl分组计算:

# 先生成你提到的Count数据框
count_df <- mtcars %>% 
  group_by(cyl, mpg) %>% 
  summarize(Count = n(), .groups = "drop")

# 计算加权均值
count_df %>%
  group_by(cyl) %>%
  summarize(weighted_mpg = weighted.mean(mpg, w = Count))

结果示例

运行上述代码后,你会得到类似这样的输出:

# A tibble: 3 × 2
    cyl weighted_mpg
  <dbl>        <dbl>
1     4         26.7
2     6         19.7
3     8         15.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:14:30