我编写了一个 R 脚本来遍历调查中的一堆变量并输出加权值、CV、CI 等。 我希望它也输出未加权的观察计数。
我知道这是一个有点懒惰的问题,因为我可以自己计算未加权的计数并将它们重新加入。我只是想复制一个会返回“obs”的 stata 脚本
svy:tab jdvariable, per cv ci obs column format(%14.4g)
这是我的计算值表:
myresult_year_calc <- svyby(make.formula(newmetricname), # variable to pass to function
by = ~year, # grouping
design = subset(csurvey, geoname %in% jv_geo), # design object with subset definition
vartype = c("ci","cvpct"), # report variation as ci, and cv percentage
na.rm.all=TRUE,
FUN = svymean # specify function from survey package
)
通过使用 unwtd.count 而不是 FUN,我得到了我想要的计数。
myresult_year_obs <- svyby(make.formula(newmetricname), # variable to pass to function
by = ~year, # grouping
design = subset(csurvey, geoname %in% jv_geo), # design object with subset definition
vartype = c("ci","cvpct"), # report variation as ci, and cv percentage
na.rm.all=TRUE,
unwtd.count
)
老实说,在写这个问题时,我通过解决方案完成了 98%,但无论如何我都会问,以防有人知道更有效的方法。
myresult_year_calc
和 myresult_year_obs
都返回我期望的结果,如果我使用 merge(myresult_year_calc, myresult_year_obs by"year")
我得到了我想要的表格。在这个例子中,这实际上只给我一个计数,每年一次,而不是一个"is"响应的计数和一个“否”响应的计数。
有没有办法用一个命令同时获得均值和未加权计数?
最佳答案
我通过创建第二个 dsgn 函数解决了这个问题,其中权重 = ~0。当我使用未加权设计的 svytotal 函数运行 svyby 时,它遵循公式。
dsgn2 <- svydesign(ids = ~0,
weights = ~0,
data = data,
na.rm = T)
unweighted_n <- svyby(~interaction(group1,group2), ~as.factor(mean_rating), design = dsgn2, FUN = svytotal, na.rm = T)
https://stackoverflow.com/questions/56991683/
相关文章:
laravel - 安装后如何使用 npm 包 (chart.js)?
django - 如何解决“"django.core.exceptions.AppRegistryN
assembly - 如何在 GDB 控制台中设置 "info registers"中的变量 rip
reactjs - 如何将 MenuItem 用作 NavLink?
angular - 上传 PUT 请求由 Angular ServiceWorker 发送两次
node.js - 事件.js :180 throw er;//Unhandled 'error'
amazon-web-services - 为什么 Amazon Athena 会抛出 "Acces
python - 为什么 GridSearchCV 方法的精度低于标准方法?