r-有没有一种方法可以使用svydesign对象和tbl_svysummary创建tbl_strata



我正试图使用参数"中的类别变量("DOMINIO"(创建一个分层表;地层;而另一个范畴("P601A"(在自变量"中;通过";,则我在变元"I601B2"、"I601D2"one_answers"I601Z2"中使用三个数值变量(;包括";。我想使用svydesign对象,因为我想对输出进行加权。不管怎样,它就是不起作用,我真的不知道为什么。

#Reading the data
load(url("https://github.com/cesarpoggi/PRUEBA/blob/main/PRUEBA_STACKOVERFLOW.rda?raw=true"))
#Setting the survey object
dessin2<- svydesign(id = ~1, 
data = PANxFAM,
weight = ~FACTOR07)
#Creating stratified table
tbl <- dessin2 %>% tbl_strata(
strata = DOMINIO,
.tbl_fun = ~ .x %>% tbl_svysummary(
by = P601A,
include = c(I601B2, I601D2, I601Z2)))

出于某种原因,它根本不起作用。我知道出了问题。如果有人能告诉我这是什么并提供解决方案,我将不胜感激。

PD:当我单独使用tbl_svysummary(如下所示(时,它完全有效。但我需要用变量DOMINIO做一个分层表:(

tbl1 = tbl_svysummary(data= dessin2, by= P601A, 
include = c(I601B2, I601D2, I601Z2), 
statistic = list(all_continuous() ~ "{mean} ({sd})"), 
digits = list(all_continuous() ~ c(2, 2)))
tbl1

问题似乎是DOMINO和P601A的某些组合的观测值太少,无法计算汇总统计数据。在下面的例子中,我删除了观测值太少的组,它运行时没有错误。

library(gtsummary)
library(survey)
packageVersion("gtsummary")
#> [1] '1.6.2.9001'
#Reading the data
load(url("https://github.com/cesarpoggi/PRUEBA/blob/main/PRUEBA_STACKOVERFLOW.rda?raw=true"))
df <- 
PANxFAM[, c("I601B2", "P601A", "DOMINIO", "FACTOR07")] |> 
tibble::as_tibble() %>% 
dplyr::group_by(DOMINIO, P601A) |> 
dplyr::filter(dplyr::n() > 5) |>  # remove groups with too few obs
dplyr::ungroup()

#Setting the survey object
dessin2<- svydesign(id = ~1, 
data = df,
weight = ~FACTOR07)
#Creating stratified table
tbl <- 
dessin2 %>% 
tbl_strata(
strata = DOMINIO,
.tbl_fun = 
~ .x %>% 
tbl_svysummary(
by = P601A,
include = c(I601B2)
)
)

创建于2022-10-24,reprex v2.0.2

最新更新