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

如何用R的gtsummary包计算非平衡面板数据的样本汇总统计?

解决gtsummary面板数据个体均值汇总问题

要得到先按PersonID计算个体均值,再跨个体取整体汇总均值的结果,不需要直接在gtsummary前分组,而是先预处理数据生成个体层面的汇总数据集,再用gtsummary处理这个新数据集:

  1. 生成个体层面汇总数据集
    用dplyr对原面板数据按PersonID分组,计算每个个体各变量的均值(按需处理缺失值),得到每个个体一行的数据集:

    library(dplyr)
    library(gtsummary)
    
    # 替换your_panel_data为你的实际数据集名
    individual_level_data <- your_panel_data %>%
      group_by(PersonID) %>%
      summarize(
        # 为每个需要汇总的变量计算个体均值
        annual_income = mean(annual_income, na.rm = TRUE),
        age = mean(age, na.rm = TRUE),
        # 其他变量依此类推添加
      ) %>%
      ungroup() # 必须取消分组,避免后续gtsummary按个体拆分结果
    
  2. 用gtsummary生成个体均值的整体汇总表
    基于上面的个体层面数据集,调用gtsummary的tbl_summary(),此时计算的就是所有个体均值的汇总统计:

    final_summary_table <- individual_level_data %>%
      tbl_summary(
        include = c(annual_income, age), # 指定要展示的变量
        # 自定义统计量格式,按需调整
        statistic = list(all_continuous() ~ "{mean} ({sd})")
      ) %>%
      # 可选:调整表头和表标题
      modify_header(label ~ "变量名称") %>%
      modify_caption("2003-2021年工人个体层面变量均值汇总")
    

关键说明

  • 原面板数据中每个个体有多条时间维度记录,gtsummary默认对所有行计算均值,会偏离个体层面的真实平均水平;
  • 先通过group_by()+summarize()得到个体均值数据集后,gtsummary的统计结果就是你需要的「个体均值的整体平均」,比如年收入会得到$51,125而非$51,725。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:30:55