【发布时间】:2020-11-10 19:16:32
【问题描述】:
我有这样的数据。我正在使用survey 包来生成名为vars 的向量中每个变量的MEAN、SE 和FREQ。
library(survey)
df <- data.frame(sex = c('F', 'M', NA, 'M', 'M', 'M', 'F', 'F'),
married = c(1,1,1,1,0,0,1,1),
pens = c(0, 1, 1, NA, 1, 1, 0, 0),
weight = c(1.12, 0.55, 1.1, 0.6, 0.23, 0.23, 0.66, 0.67))
vars <- c("sex","married","pens")
这是我的调查设计:
design <- svydesign(ids=~1, data=df, weights=~weight)
我正在使用 lapply 来寻找方法:
lapply(vars, function(x)
svymean(as.formula(paste0('~interaction(', x, ')')), design, na.rm = T))
我正在使用 lapply 来查找频率:
lapply(vars, function(x)
svytable(as.formula(paste0('~interaction(', x, ')')), design))
有没有办法在这两个函数上运行 lapply 作为同一个 tine?我希望我的输出如下所示:
mean SE freq
interaction(sex)F 0.60345 0.2067 2.45
interaction(sex)M 0.39655 0.2067 1.61
我试过了:
lapply(vars, function(x)
svymean(as.formula(paste0('~interaction(', x, ')')),
svytable(as.formula(paste0('~interaction(', x, ')')), design)))
【问题讨论】:
-
只需编写您的匿名函数以在列表中返回两个结果?
-
@Dason 请建议如何做到这一点?