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

如何在R中按分组提取回归beta系数并计算变量均值

分组回归与汇总统计实现方法

可以用dplyr结合broom包快速实现你的需求,具体步骤如下:

1. 安装并加载依赖包

如果尚未安装相关包,先执行安装命令:

install.packages(c("dplyr", "broom"))

加载包:

library(dplyr)
library(broom)

2. 分组计算回归系数与均值

通过分组后嵌套执行回归,提取目标系数并计算均值:

result <- sales.data %>%
  group_by(MDM_Key) %>%
  summarise(
    # 提取iek_disc_price对应的beta系数
    beta = tidy(lm(sale_count ~ iek_disc_price, data = cur_data())) %>%
      filter(term == "iek_disc_price") %>%
      pull(estimate),
    # 计算sale_count的均值(保留两位小数)
    `mean(sale_count)` = round(mean(sale_count), 2),
    # 计算iek_disc_price的均值(取整数)
    `mean(iek_disc_price)` = round(mean(iek_disc_price), 0)
  )

# 输出结果
print(result)

结果说明

由于你的示例数据中MDM_Key=370和371的观测值完全一致,因此两组的beta系数、均值结果完全相同,输出与你预期的格式一致:

# A tibble: 2 × 4
  MDM_Key   beta `mean(sale_count)` `mean(iek_disc_price)`
    <int>  <dbl>              <dbl>                  <dbl>
1     370 0.000856               25.1                  35305
2     371 0.000856               25.1                  35305

替代方案(无需broom包)

如果不想额外加载broom包,也可以直接从回归结果中提取系数:

result <- sales.data %>%
  group_by(MDM_Key) %>%
  summarise(
    beta = coef(lm(sale_count ~ iek_disc_price, data = cur_data()))["iek_disc_price"],
    `mean(sale_count)` = round(mean(sale_count), 2),
    `mean(iek_disc_price)` = round(mean(iek_disc_price), 0)
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:11:17