首页 > 解决方案 > 如何更正箱线图的标签获取 R 中每对的 p 值

问题描述

我有一个数据样本如下:

df <- tribble(
    ~capacity1, ~capacity2, ~capacity3, ~capacity4, ~capacity5, ~capacity6, ~capacity7, ~capapcity8,
    75, 88, 85, 71, 98, 76, 71, 57,
    80, 51, 84, 72, 59, 81, 70, 64,
    54, 65, 90, 66, 93, 88, 77, 59,
    59, 87, 94, 75, 74, 53, 56, 87,
    52, 55, 64, 77, 50, 64, 83, 87,
    33,22,66,67,99,87,40,90,)

我想得到下图。

在此处输入图像描述

如您所见,容量 1 与容量 2 一起生成一个标签作为容量 1。容量 3,容量 4=容量 2,容量 5 和容量 6=容量 3,容量 7,容量 8=容量 4。接下来,我想获得 p 值。如果我们可以订购每对盒子(例如,容量 1 和容量 2=容量 1),那就太好了。

标签: rggplot2

解决方案


list如果我们需要成对图,我们可以为每对列拆分成一个数据集,然后使用ggboxplotfromggpubr

library(dplyr)
library(tidyr)
library(purrr)
library(patchwork)
library(rstatix)
library(ggpubr)
lst1 <- df %>% 
        # // split every 2 columns
        split.default(as.integer(gl(ncol(.), 2, ncol(.)))) %>% 
        # // loop over the list
        map(~ {
          # // reshape to long format
           dat <- pivot_longer(.x, everything())
           # // get the t.test p value
           stat_test <- dat %>%
                         t_test(value ~ name)%>% 
                         adjust_pvalue(method = "bonferroni") %>%      
                         add_significance("p.adj") %>% 
                         add_xy_position(x = "name")
        # // create the boxplot
        ggboxplot(dat, x = 'name', y = 'value')+
                   stat_pvalue_manual(stat_test, 
                        label = "p.adj", tip.length = 0.01)
        })       

wrap_plots现在,我们用from包装地块列表patchwork

wrap_plots(lst1)

-输出

在此处输入图像描述


推荐阅读