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

如何用svydesign对象与tbl_svysummary创建tbl_strata分层表格?

分层加权表格创建失败的排查与解决方案

问题描述

尝试基于svydesign加权对象创建分层表格:

  • 以分类变量DOMINIO为分层参数(strata)
  • 以分类变量P601A为分组参数(by)
  • 纳入数值变量I601B2、I601D2、I601Z2

调用tbl_strata的代码无法运行,但单独使用tbl_svysummary可正常生成表格。

报错原因

tbl_strata函数要求strata参数必须以公式形式传入(即~变量名),原代码直接使用变量名DOMINIO,不符合函数参数要求,导致代码运行失败。

解决方案

修正strata参数为公式格式,并在tbl_svysummary中补充统计量格式和位数设置,保持与单独运行的表格输出一致。修正后的完整代码如下:

# 读取数据(请先将目标数据文件下载到工作目录)
load("PRUEBA_STACKOVERFLOW.rda")

# 创建加权调查对象
dessin2 <- svydesign(id = ~1, 
                     data = PANxFAM,
                     weight = ~FACTOR07)

# 创建分层加权表格
tbl <- dessin2 %>% tbl_strata(
  strata = ~DOMINIO,  # 修正为公式形式的分层参数
  .tbl_fun = ~ .x %>% tbl_svysummary(
    by = P601A,
    include = c(I601B2, I601D2, I601Z2),
    statistic = list(all_continuous() ~ "{mean} ({sd})"),  # 定义统计量格式
    digits = list(all_continuous() ~ c(2, 2))  # 设置小数位数
  )
)

# 查看生成的表格
tbl

效果说明

运行修正后的代码后,会生成以DOMINIO的每个水平为分层的独立表格,每个分层内按P601A分组,展示指定数值变量的均值(标准差),且所有数值保留两位小数,输出格式与单独运行的tbl1完全一致。

内容的提问来源于stack exchange,提问作者César Poggi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:45:34