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

gtsummary如何隐藏指定行N值并按变量配置缺失值显示规则

gtsummary tbl_summary 两个常见问题解决方案

问题1:指定Test~Test7行不显示N值,其余变量保留N值

原代码不生效有三个核心原因:

  • statistic参数的匹配规则是按列表顺序从上到下生效,把通用选择器all_categorical()写在Test系列变量的前面,会导致后面Test系列的自定义规则被覆盖
  • 给Test系列设置空字符串" "会导致统计列完全空白,正确写法是直接写入需要展示的统计量即可
  • 末尾的add_n()默认对所有变量生效,会在变量名旁统一添加N值,需要通过参数指定排除不需要显示N的变量

修正后可运行代码:

base %>%
  tbl_summary(
    include = all_of(var_interet),
    statistic = list(
      # 注意:单变量自定义规则必须放在通用选择器前面
      Test ~ "{p}%", 
      Test2 ~ "{p}%", 
      Test3 ~ "{p}%", 
      Test4 ~ "{p}%", 
      Test5 ~ "{p}%", 
      Test6 ~ "{p}%", 
      Test7 ~ "{p}%",
      all_categorical() ~ "{n} ({p}%)"
    ),
    digits = list(
      all_categorical() ~ c(0, 1)
    ), 
    type = list(
      Q1_oui_systematique ~ "dichotomous", 
      Q1_non_temps ~ "dichotomous", 
      Q1_non_outils ~ "dichotomous", 
      Q1_non_aise ~ "dichotomous", 
      Q1_non_necessaire ~ "dichotomous", 
      Q1_non_autre ~ "dichotomous"
    ),   
    sort = c(ID_type_centre, ID_repondant,presence_tiers1, Q1_oui_systematique, Q2_oui_mod_decouverte, Q4) ~ "frequency",
    missing = "no"
  ) %>%
  bold_labels() %>% 
  italicize_levels() %>%
  modify_spanning_header(all_stat_cols() ~ "**Ps**") %>%
  # 排除Test系列变量,这些行不会显示N值
  add_n(include = -all_of(c("Test", "Test2", "Test3", "Test4", "Test5", "Test6", "Test7")))

问题2:按单个变量独立配置缺失值显示规则

gtsummary的missing参数本身是全局配置,要实现单变量独立控制,不用修改原始数据的最简方案是:全局先设置missing = "ifany",再通过modify_table_styling()隐藏指定变量对应的缺失值行即可。

示例代码:

# 定义不需要显示缺失值的变量名向量(即无作答权限、不需要展示缺失的题项)
no_show_miss_vars <- c("Q1_oui_systematique", "Q1_non_temps", "Q1_non_outils", "Q1_non_aise", "Q1_non_necessaire", "Q1_non_autre")

base %>%
  tbl_summary(
    include = all_of(var_interet),
    statistic = list(
      Test ~ "{p}%", 
      Test2 ~ "{p}%", 
      Test3 ~ "{p}%", 
      Test4 ~ "{p}%", 
      Test5 ~ "{p}%", 
      Test6 ~ "{p}%", 
      Test7 ~ "{p}%",
      all_categorical() ~ "{n} ({p}%)"
    ),
    digits = list(all_categorical() ~ c(0, 1)), 
    type = list(
      Q1_oui_systematique ~ "dichotomous", 
      Q1_non_temps ~ "dichotomous", 
      Q1_non_outils ~ "dichotomous", 
      Q1_non_aise ~ "dichotomous", 
      Q1_non_necessaire ~ "dichotomous", 
      Q1_non_autre ~ "dichotomous"
    ),   
    sort = c(ID_type_centre, ID_repondant,presence_tiers1, Q1_oui_systematique, Q2_oui_mod_decouverte, Q4) ~ "frequency",
    # 全局开启缺失值按需显示
    missing = "ifany"
  ) %>%
  bold_labels() %>% 
  italicize_levels() %>%
  modify_spanning_header(all_stat_cols() ~ "**Ps**") %>%
  add_n(include = -all_of(c("Test", "Test2", "Test3", "Test4", "Test5", "Test6", "Test7"))) %>%
  # 隐藏指定变量的缺失值行
  modify_table_styling(
    columns = all_stat_cols(),
    rows = variable %in% no_show_miss_vars & label %in% c("Unknown", "缺失"),
    hide = TRUE
  )

注意:如果运行后发现目标缺失行没有被隐藏,可以先运行as_tibble(生成的表格对象)查看内部数据,确认缺失行对应的label字段实际内容,替换代码中匹配的字符即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:30:47