通过循环访问数据框中的变量名称,使用 ggpubr 和 rstatix 创建一组图

问题描述

我正在尝试创建一个脚本,使用该脚本我可以自动创建一组图(分面和分组),并使用 ggpubrrstatix 包计算和绘制 p 值。

set.seed(1234)

创建数据集
data_set <- 
  data.frame(
    var1 = rep(c("N","N","Y","Y"),4),var2 = c(rep("type1",8),rep("type2",8)),var3 = c(rep("type1",rep("type1",4)),x = rnorm(16),y = rnorm(16),z = rnorm(16)
    )
对变量 xvar2var3 分组并按 var1 分面(见下文),并使用 rstatix 函数将结果存储为数据框
stat.test <- data_set %>%
 group_by(var2,var1) %>%
 t_test( x ~ var3) %>%
 adjust_pvalue(method = "bonferroni") %>%
 add_significance("p.adj") %>%
 add_xy_position(x = "var2",dodge = 0.8)

这次使用由 x 分组并再次由 var3 分面的数据对变量 var2var1 执行另一个 t 检验并执行 mutate 以改变一些变量,以便它们在使用下面的函数绘制时正确对齐。
stat.test.1 <- data_set %>%
  group_by(var3,var1) %>%
  t_test( x ~ var2) %>%
  adjust_pvalue(method = "bonferroni") %>%
  add_significance("p.adj") %>%
  add_xy_position(x = "var3",dodge = 0.8) %>%
  mutate(
    xmin = xmin + c(0,-0.6,-0.6),xmax = xmax + c(0.6,0.6,0),y.position = y.position + c(1,1,2,2)
  )
使用 ggBoxplot 绘图
ggBoxplot(
  data_set,x = "var2",add = "mean_sd",y = "x",color = "var3",facet.by = "var1"
) +
  stat_pvalue_manual(stat.test,label = "p.adj",tip.length = 0.01,hide.ns = FALSE) +
  stat_pvalue_manual(
    stat.test.1,hide.ns = FALSE
  ) +
  scale_y_continuous(expand = expansion(mult = c(0.01,0.1)))

所有这些都符合我的预期,我得到了我想要的图以及绘制的显着性值(虽然不完美,但需要对显着性条的 y 位置进行一些调整)。

enter image description here

我想要做的是使用 tidy 方法创建一个函数或脚本,为所有数字变量(xyz ) 以与此图相同的方式分组和分面。我能够自己获取图表,但是在生成统计数据框并使用它们将 p 值和显着性条添加到图表中时遇到了困难。谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)