首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能在sapply中使用survey_mean

不能在sapply中使用survey_mean
EN

Stack Overflow用户
提问于 2020-06-08 10:27:42
回答 1查看 99关注 0票数 0

我使用的是surveysrvyr包的调查数据,在所有列中应用survey_mean()都有一些困难。

下面是一个例子:

代码语言:javascript
复制
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行。指定的数据有200行。只有大小为1的ℹ载体被回收。运行rlang::last_error()以查看错误发生的位置。

请注意:

代码语言:javascript
复制
dstrata %>%
  select(api99, api00) %>%
  summarise_all(.funs = srvyr::survey_mean, na.rm = T)

使用此示例,但不适用于我的实际数据,因此我想了解为什么上面的函数不能工作。

我用的是srvyr_0.3.9survey_4.0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-08 10:33:30

我不知道为什么这里需要任何类型的NSE,因为在sapply中只有值被传递,而不是表达式。

这似乎是可行的:

代码语言:javascript
复制
library(dplyr)

sapply(dstrata$variables %>% select(api99, api00), function(x){
   dstrata %>%
      summarise(stat = srvyr::survey_mean(x, na.rm = TRUE)) 
})

#        api99    api00   
#stat    630.3107 663.4118
#stat_se 10.14777 9.566393
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62259986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档