当 运行 来自 R Survey 包的 svymean 时,我可以得到 unwtd.count 吗?

Can I get unwtd.count included when running the svymean from the R Survey package?

我编写了一个 R 脚本来遍历调查中的一堆变量并输出加权值、CV、CI 等。 我希望它也输出未加权的观察计数。

我知道这是一个有点懒惰的问题,因为我可以自己计算未加权的计数并将它们重新加入。我只是想复制一个 Stata 脚本 return 'obs'

svy:tab jdvariable, per cv ci obs column format(%14.4g)

这是我的计算值table:

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_calcmyresult_year_obs 都是 return 我所期望的,如果我使用 merge(myresult_year_calc, myresult_year_obs by"year") 我得到我想要的 table . 这实际上只给我一个计数,在这个例子中每年一次,而不是 'Yes' 响应的一个计数和 'No'.

的一个计数

有什么方法可以通过一条命令同时获得均值和未加权计数吗?

我通过创建第二个 dsgn 函数解决了这个问题,其中权重 = ~0。当我 运行 svyby 使用未加权设计的 svytotal 函数时,它遵循公式。

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)