【发布时间】:2020-04-04 20:07:52
【问题描述】:
我有一个模板,我用它从源头汇总我的数据以获得均值和 95% 的置信水平,以便在 ggplot 中绘制这些(最初改编自多年前的 Stack Overflow 帖子,很抱歉,但我不知道'不知道原始来源)看起来像:
data %>%
group_by(var1, var2) %>%
summarise(count=n(),
mean.outcome_variable = mean(outcome_variable, na.rm = TRUE),
sd.outcome_variable = sd(outcome_variable, na.rm = TRUE),
n.outcome_variable = n(),
total.outcome_variable = sum(outcome_variable)) %>%
mutate(se.outcome_variable = sd.outcome_variable / sqrt(n.outcome_variable),
lower.ci.outcome_variable = mean.outcome_variable - qt(1 - (0.05 / 2), n.outcome_variable - 1) * se.outcome_variable,
upper.ci.outcome_variable = mean.outcome_variable + qt(1 - (0.05 / 2), n.outcome_variable - 1) * se.outcome_variable)
这适用于一个或两个结果变量,但复制和粘贴大量结果变量变得不切实际,所以我希望使用 summarise_if 代替我有大量结果变量都是数字的。但是,我不知道如何在“funs”参数中指定比简单函数(例如“mean”或“sd”)更复杂的东西。我试过 gmodels::ci() 如下:
dataset_aggregated <- data %>%
group_by(var1, var2) %>%
summarise_if(is.numeric, funs(mean, lowCI = ci()[2], hiCI = ci()[3])) # does not work without brackets either
然而这会导致
Error in summarise_impl(.data, dots) :
Evaluation error: no applicable method for 'ci' applied to an object of class "NULL".
如何让它工作?
【问题讨论】:
-
查看
summarise()范围变体的帮助文件。它看起来像这样:summarise_if(is.numeric, list(mean = ~mean(.), lowCI = ~ci(.)[2], hiCI = ~ci(.)[3])) -
谢谢!这会派上用场的!
标签: r dplyr conditional-statements