如何在R语言中输出2倍标准差(2SD)?替代手动计算的编码方案
问题
当前使用rstatix和dplyr的代码如下,输出的是均值和1倍标准差,但需要输出均值和2倍标准差(2SD),希望实现可复用的编码方式,避免每次手动乘以2:
library(rstatix) library(dplyr) lk %>% group_by(sample) %>% get_summary_stats(cd, type = "mean_sd") lk %>% anova_test(cd ~ sample)
可复用实现方法
最直接的方式是自定义包装函数,把计算2SD的逻辑封装起来,后续直接调用即可:
# 自定义函数:按分组计算均值和2倍标准差 get_mean_2sd <- function(data, target_var, group_var) { data %>% group_by({{ group_var }}) %>% get_summary_stats({{ target_var }}, type = "mean_sd") %>% mutate( sd = sd * 2, # 可选:修改列名明确标注是2倍标准差 variable = stringr::str_replace(variable, "sd", "2SD") ) } # 调用示例 get_mean_2sd(lk, cd, sample)
说明
- 函数使用
{{ }}实现非标准评估,可以直接传入变量名(不用加引号),和dplyr、rstatix的语法风格保持一致 - 自动将
get_summary_stats输出的sd列乘以2,还可选修改变量名,让结果更清晰 - ANOVA分析部分不受影响,依然可以用原代码
lk %>% anova_test(cd ~ sample)执行
内容的提问来源于stack exchange,提问作者Bloop
相关产品推荐
相关产品推荐

