如何用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
相关产品推荐
相关产品推荐

