我试图为NHANES调查数据创建一个表1,首先通过肥胖与非肥胖的二元变量分层,然后通过对照/治疗组状态的二元变量(“wlp_yn”)再次分层。我想获得分类特征的计数(%)和连续基线特征的平均值(SE)。对于这些计数和平均值,我也试图获得p值。
我尝试过使用tbl_svysummary()、svyby()、tbl_strata()和CreateTableOne(),但都没有成功。
在下面的代码中,我将整个数据集划分为一个较小的数据集,其中只包含对照组数据(“obese_adults”),以便首先对表进行划分。我还从年龄作为特征开始(“age_group”是“RIDAGEYR”连续变量的分类版本)。我无法理解它,但我很好奇是否有其他的编码方式?
add_p_svysummary_ex1 <-
obese_adults %>%
tbl_svysummary(by = wlp_yn, percent = "row", include = c(age_group, RIDAGEYR),
statistic = list(all_continuous() ~ "{mean} ({sd})")) %>%
add_p()
add_p_svysummary_ex1
svyby(~RIDAGEYR, ~age_group+wlp_yn, obese_adults, svymean) # avg age of each age group
先谢了!真的很感激你的帮助。
编辑:这是重现性代码的简化版本
# DEMO
demo <- nhanes('DEMO')
demo_vars <- names(demo)
demo2 <- nhanesTranslate('DEMO', demo_vars, data = demo)
# PRESCRIPTION MEDICATIONS
rxq_rx <- nhanes('RXQ_RX')
rxq_rx_vars <- names(rxq_rx)
rxq_rx2 <- nhanesTranslate('RXQ_RX', rxq_rx_vars, data = rxq_rx)
rxq_rx2 <- rxq_rx2 %>% select("SEQN", "RXD240B") %>% filter(!is.na(RXD240B)) %>% group_by(SEQN) %>% dplyr::summarise(across(everything(), ~toString(na.omit(.))))
nhanesAnalysis = join_all(list(demo2, rxq_rx2), by = "SEQN", type = "full")
# Reconstructing survey weights for combining 1999-2018 - Combining ten survey cycles (twenty years)
nhanesAnalysis$wtint20yr <- ifelse(nhanesAnalysis$SDDSRVYR %in% c(1,2), (2/10 * nhanesAnalysis$WTINT4YR), # for 1999-2002
(1/10 * nhanesAnalysis$WTINT2YR)) # for 2003-2018
# sample weights
nhanesDesign <- svydesign(id = ~SDMVPSU,
strata = ~SDMVSTRA,
weights = ~wtint20yr,
nest = TRUE,
data = nhanesAnalysis)
# subset
obese_adults <- subset(nhanesDesign, (obesity == 1 & !is.na(BMXBMI) & RIDAGEYR >= 60))
1条答案
按热度按时间iqih9akk1#
这是你要找的吗?一个双假分裂:
我不知道您为什么喜欢在这里使用
tbl_svysummary()
,它是为测量权重而设计的。