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

如何按分类变量分组生成含多变量的清晰描述性统计表格?

按ResJobLocationChoice分组的多变量统计表格解决方案

问题说明

需要基于分类变量ResJobLocationChoice(4个取值)分组,在一张表格中展示多个分类、连续变量的观测数n、均值、标准差、最值,此前尝试的tapply和stargazer代码无法适配多变量需求。

解决方案

使用dplyr批量处理连续变量的分组统计,结合tidyr整理分类变量的交叉计数,最后合并结果并输出表格。

1. 处理连续变量统计

针对Wage、CommuteTime、HousingPrice这类连续变量,一次性计算每个分组下的观测数、均值、标准差、最值:

library(dplyr)

# 连续变量分组统计
continuous_stats <- data_df %>%
  group_by(ResJobLocationChoice) %>%
  summarise(
    across(
      c(Wage, CommuteTime, HousingPrice), # 指定需要统计的连续变量
      list(
        n = ~n(),
        mean = ~mean(., na.rm = TRUE),
        sd = ~sd(., na.rm = TRUE),
        min = ~min(., na.rm = TRUE),
        max = ~max(., na.rm = TRUE)
      ),
      .names = "{.col}_{.fn}" # 生成带变量名和统计量的列名
    )
  )

2. 处理分类变量统计

针对Female这类分类变量,生成每个分组下各分类水平的观测数:

library(tidyr)

# 分类变量分组计数
categorical_stats <- data_df %>%
  group_by(ResJobLocationChoice, Female) %>%
  count(name = "count") %>%
  pivot_wider(
    names_from = Female,
    values_from = count,
    names_prefix = "Female_" # 列名前缀区分分类变量
  )

3. 合并统计结果并输出

将连续变量和分类变量的统计结果合并,再用stargazer或gt输出表格:

# 合并结果
final_table <- continuous_stats %>%
  left_join(categorical_stats, by = "ResJobLocationChoice")

# 用stargazer输出文本格式表格
stargazer(final_table, type = "text", digits = 2, title = "居住-工作地点选择分组统计")

# 用gt生成美观的可视化表格(可选)
library(gt)
final_table %>%
  gt() %>%
  tab_header(title = "居住-工作地点选择分组统计") %>%
  fmt_number(columns = contains(c("mean", "sd", "min", "max")), decimals = 2)

关键说明

  • across()函数实现了多变量的批量统计,避免重复编写代码
  • pivot_wider()将分类变量的长格式计数转换为宽格式,方便和连续变量结果合并
  • stargazer需传入最终的统计结果表而非原始分组数据,这是此前代码失败的核心原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:01:04