对所有变量运行svymean

问题描述

------短篇小说--------

我想对数据集中的所有变量运行svymean(假设它们都是数字的)。我已从本指南中摘录了以下内容:https://stylizeddata.com/how-to-use-survey-weights-in-r/

我知道我可以这样列出所有变量,从而对所有变量运行svymean:

svymean(~age+gender,ageDesign,na.rm = TRUE)

但是,我的实际数据集的长度为500个变量(它们都是数字),因此我需要一次高效地获取所有均值。我尝试了以下操作,但不起作用。

svymean(~.,na.rm = TRUE)

有任何想法吗?

---------有关真实数据的详细解释-----

library(haven)
library(survey)
library(dplyr)
 

导入NHANES人口统计数据

nhanesDemo <- read_xpt(url("https://wwwn.cdc.gov/Nchs/Nhanes/2015-2016/DEMO_I.XPT"))

复制并重命名变量,使其更直观。 “ fpl”是百分比 联邦贫困线。取值范围是0到5。

nhanesDemo$fpl        <- nhanesDemo$INDFMPIR
 
nhanesDemo$age        <- nhanesDemo$RIDAGEYR
 
nhanesDemo$gender     <- nhanesDemo$RIAGENDR
 
nhanesDemo$persWeight <- nhanesDemo$WTINT2YR
 
nhanesDemo$psu        <- nhanesDemo$SDMVPSU
 
nhanesDemo$strata     <- nhanesDemo$SDMVSTRA

由于有47个变量,因此我们将仅选择将在其中使用的变量 这种分析。

nhanesAnalysis <- nhanesDemo %>%
                    select(fpl,age,gender,persWeight,psu,strata)
 

调查权重

在这里,我们使用“ svydesign”来分配权重。我们将使用这种新设计 运行我们的分析时,变量“ nhanesDesign”。

nhanesDesign <- svydesign(id      = ~psu,strata  = ~strata,weights = ~persWeight,nest    = TRUE,data    = nhanesAnalysis)

在这里,我们使用“子集”来告诉“ nhanesDesign”,我们只想看一个 特定的亚人群(即18-79岁之间的人群)。这是 重要的事情。如果您不这样做,只是以其他方式进行限制 您的估算值没有正确的SE。

ageDesign <- subset(nhanesDesign,age > 17 &
                                  age < 80)

统计

我们将使用“ svymean”来计算年龄的总体平均值。航海 参数“ TRUE”从计算中排除丢失的值。我们看到 平均年龄为45.648,标准误为0.5131。

svymean(~age,na.rm = TRUE)

我知道我可以通过列出所有变量来对所有变量运行svymean: svymean(〜年龄+性别,ageDesign,na.rm = TRUE) 但是,我的实际数据集的长度为500个变量,因此我需要一次高效地获取所有均值。我尝试了以下操作,但不起作用。 svymean(〜。,ageDesign,na.rm = TRUE)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)