You need to enable JavaScript to run this app. gtsummary::tbl_svysummary实现性别-国家两层嵌套调查汇总表的方法咨询
优惠活动
大模型
产品
解决方案
定价
更多

gtsummary::tbl_svysummary实现性别-国家两层嵌套调查汇总表的方法咨询

嵌套分层调查汇总表高效实现方案

核心逻辑

无需逐国家筛选、手动拼接表格,直接使用gtsummary内置的tbl_strata()函数即可批量实现两层嵌套结构:第一层按Country拆分独立表格块,每个块内部嵌入Gender的次级分组行,可自动覆盖全部21个国家的计算,大幅降低重复操作成本。

可直接运行的复现代码

基于你已经构建完成的df_survey调查设计对象,直接运行以下代码即可生成符合要求的嵌套表:

library(gtsummary)
library(survey)

nested_result_table <- df_survey %>%
  # 外层批量按Country生成独立分层块,自动完成所有国家块的拼接
  tbl_strata(
    strata = Country,
    .header = "**{strata}**", # 为每个国家块加醒目标题,区分不同国家
    ~.x %>%
      tbl_svysummary(
        by = Result,
        percent = "row",
        include = Gender, # 将Gender作为行维度纳入,实现次级嵌套
        label = list(Gender ~ "")
      ) %>%
      add_overall(last = TRUE, col_label = "**n(row)**") %>%
      modify_header(
        label = "",
        stat_by = "**{level}**"
      ) %>%
      bold_labels() %>%
      italicize_levels() %>%
      italicize_labels()
  )

常见适配调整

  • 嵌套顺序自定义:如果需要调换两层嵌套的优先级,只需要修改tbl_strata()的strata参数、以及内层tbl_svysummary()的include参数即可,比如将strata设为Gender、include设为Country,就可以实现“先按性别分块、块内部按国家拆分”的结构。
  • 长表展示优化:21个国家生成的长表可以配合as_gt()调用gt包的参数调整表格宽度、添加横向滚动条,避免内容拥挤:
    nested_result_table %>%
      as_gt() %>%
      gt::tab_options(table.width = 1200) # 按展示需求调整宽度
    
  • 原有代码的问题修正:之前写的基础表格代码没有将Gender纳入include参数,系统默认不会将Gender作为行维度展示,因此无法生成嵌套结构,上述代码已经补齐了这个配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 05:06:10