问题描述
------短篇小说--------
我想对数据集中的所有变量运行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 (将#修改为@)