下面是一个实现上述需求的R语言function功能函数:

library(dplyr)
library(ggpubr)

group_compare <- function(data, group_var, x_var, y_var) {
  
  # 分组数据
  data_grouped <- data %>% group_by(!!sym(group_var))
  
  # 两两比较并作显著性检验
  result <- pairwise.t.test(data_grouped[[y_var]], data_grouped[[group_var]],
                            p.adj = 'bonferroni')
  
  # 生成柱状图并添加误差线和pvalue
  ggboxplot(data, x = x_var, y = y_var, color = group_var,
            add = 'mean_sd', ylim = c(0, max(data[[y_var]])),
            palette = 'jco') +
    stat_compare_means(comparisons = list(c('A', 'B'), c('A', 'C'), c('B', 'C')),
                       method = 't.test', paired = FALSE, p.adjust.method = 'bonferroni',
                       label = 'p.adj', hide.ns = TRUE) +
    ggtitle('Group Comparison') +
    xlab(x_var) +
    ylab(y_var) +
    theme_pubclean()
  
  # 保存图片为pdf格式
  ggsave('group_comparison.pdf', width = 8, height = 6, dpi = 300)
  
  # 返回显著性检验结果
  return(result)
}

这个函数接受四个参数:数据框data,分组变量名group_var,X轴变量名x_var,Y轴变量名y_var。函数首先对数据进行分组,然后使用pairwise.t.test函数对分组后的数据进行两两比较,并作显著性检验。接下来,函数使用ggboxplot函数生成柱状图,并添加误差线和pvalue。最后,函数使用ggsave函数保存图片为pdf格式,并返回显著性检验结果。

使用示例:

# 生成测试数据
set.seed(123)
data <- data.frame(group = rep(c('A', 'B', 'C'), each = 10),
                   x = rep(c(1, 2, 3), each = 10),
                   y = rnorm(30, mean = c(10, 20, 30), sd = 2))

# 调用函数
group_compare(data, 'group', 'x', 'y')

运行上述代码后,函数将生成柱状图并保存为pdf文件,同时返回显著性检验结果。

R语言函数:分组数据两两比较并作显著性检验,生成柱状图并添加误差线和pvalue

原文地址: https://www.cveoy.top/t/topic/lC2P 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录