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

使用tbl_svysummary时如何修改表头显示无缺失值的未加权N?

解决tbl_svysummary中{N_nonmiss_unweighted}报错问题

问题场景

需要用tbl_svysummary生成表格,要求:

  • 百分比为加权值
  • 表头显示未加权的无缺失值总数N
  • 忽略NA值
    但使用{N_nonmiss_unweighted}参数时触发报错。

原代码:

pcv_s %>%
  tbl_svysummary(include = (langue_eng), 
                 missing = "no", 
                 label = list(langue_eng = "Maîtrise de l'anglais"),
                 statistic = all_categorical() ~"{n_unweighted} ({p}%)") %>%
  modify_header( label = "Anglais :", 
                 stat_0 = "**N = {N_nonmiss_unweighted} **") %>%
  modify_footnote(update = list(everything() ~ NA))

报错信息:

✖ There was an error processing column "stat_0"--likely a glue syntax error.
ℹ The following fields are available to insert via glue syntax:
column (), N (), N_unweighted (), n (), p (), n_unweighted (), p_unweighted (), level ()
Error in map2():
ℹ In index: 2.
ℹ With name: stat_0.
Caused by error:
! Error processing modify_*() for column 'stat_0'.

当前临时方案是手动用sum()输入数值,但不适用于批量生成表格的场景。

错误原因

从报错提示的可用glue变量列表可以看到,tbl_svysummary的modify_header中并没有内置{N_nonmiss_unweighted}这个变量,仅提供了{N_unweighted}(全样本未加权总数),无法直接调用无缺失值的未加权计数。

解决方案

先手动计算目标列的未加权无缺失值总数,再将其传入modify_header中:

  1. 计算未加权无缺失值数量:
# 计算langue_eng列的未加权无缺失值总数
n_unweighted_nonmiss <- sum(!is.na(pcv_s$variables$langue_eng))
  1. 修改后的完整代码:
pcv_s %>%
  tbl_svysummary(include = (langue_eng), 
                 missing = "no", 
                 label = list(langue_eng = "Maîtrise de l'anglais"),
                 statistic = all_categorical() ~"{n_unweighted} ({p}%)") %>%
  modify_header( 
    label = "Anglais :", 
    stat_0 = glue::glue("**N = {n_unweighted_nonmiss} **")
  ) %>%
  modify_footnote(update = list(everything() ~ NA))

如果需要批量处理多列,可以将计算逻辑封装成函数,自动获取对应列的无缺失值未加权计数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:07:05