如何使用stargazer生成带组别表头的分组汇总统计结果
stargazer分组输出汇总统计解决方案
以下两种实现方式均无需依赖额外包,优先推荐原生参数实现方案:
方法1:原生多数据集输入(首选)
stargazer默认支持同时传入多个数据集,会自动为每个数据集生成单独的汇总统计列,可直接通过column.labels参数设置组别表头:
# 加载依赖 library(stargazer) # 示例:以mtcars数据集按am(变速箱类型)分组为例 # 拆分分组子集 group_auto <- mtcars[mtcars$am == 0, ] group_manual <- mtcars[mtcars$am == 1, ] # 输出分组汇总表 stargazer(group_auto, group_manual, type = "text", title = "车辆指标分组汇总统计", # 自定义组别表头 column.labels = c("自动变速箱", "手动变速箱"), # 可选:自定义统计量展示维度 summary.stat = c("n", "mean", "sd", "min", "max"), # 可选:自定义变量展示名称 covariate.labels = c("里程数", "气缸数", "排量", "马力", "车重"), digits = 2)
方法2:预汇总后传入(适合自定义统计量场景)
如果需要输出stargazer默认不支持的统计量,可先手动完成分组统计计算,再将整理好的汇总表传入stargazer,关闭自动汇总功能即可:
library(stargazer) library(dplyr) # 预计算分组统计结果 summary_res <- mtcars %>% group_by(am) %>% summarise(across(c(mpg, cyl, disp, hp), list(均值 = ~mean(.x, na.rm = T), 标准差 = ~sd(.x, na.rm = T), 样本量 = ~n()))) %>% t() # 转置为「统计项为行、组别为列」的格式 # 输出结果 stargazer(summary_res, type = "text", summary = FALSE, # 关闭默认汇总逻辑 column.labels = c("自动变速箱", "手动变速箱"), rownames = TRUE)
常见优化技巧
- 若分组数量较多,可直接用
group_list <- split(mtcars, mtcars$am)批量生成所有分组的数据集列表,直接将group_list传入stargazer第一个参数即可,无需手动逐个拆分赋值。 - 可通过
summary.stat参数自定义需要展示的统计维度,支持的可选值包括n、mean、sd、min、p25、median、p75、max。 - 输出格式可通过
type参数切换,支持text(本地预览)、latex(论文排版)、html(网页展示)三类。
内容的提问来源于stack exchange,提问作者AJ_0000
相关产品推荐
相关产品推荐

