【发布时间】:2020-06-08 10:27:42
【问题描述】:
我正在使用带有包survey 和srvyr 的调查数据,我在将survey_mean() 应用于所有列时遇到了一些问题。
这是一个例子:
library(survey)
library(srvyr)
data(api)
dstrata <- apistrat %>%
as_survey_design(strata = stype, weights = pw) %>%
mutate(api00 = ifelse(api00 == 467, NA, api00),
api99 = ifelse(api99 == 491, NA, api99))
sapply(dstrata$variables %>% select(api99, api00), function(x){
x <- enquo(x)
dstrata %>%
filter(!is.na(!!x)) %>%
summarise(stat = srvyr::survey_mean(!!x, na.rm = TRUE)[, 1])
})
错误:分配的数据
x必须与现有数据兼容。 x 现有数据有 198 行。 x 分配的数据有 200 行。 ℹ 仅回收大小为 1 的向量。 运行rlang::last_error()以查看错误发生的位置。
注意:
dstrata %>%
select(api99, api00) %>%
summarise_all(.funs = srvyr::survey_mean, na.rm = T)
适用于这个例子,但不适用于我的实际数据,所以我想了解为什么上面的函数不起作用。
我正在使用srvyr_0.3.9 和survey_4.0
【问题讨论】: