Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用R中的百分位数为两种类型的样本绘制方框图_R_Boxplot - Fatal编程技术网

如何使用R中的百分位数为两种类型的样本绘制方框图

如何使用R中的百分位数为两种类型的样本绘制方框图,r,boxplot,R,Boxplot,我的数据如下所示: df <-data.frame( Group = c("1", "2", "3", "4"), GOOD_0 = c(1L, 1L, 1L, 1L), GOOD_25 = c(61.25, 1, 1, 1), GOOD_50 = c(119, 1, 1, 1), GOOD_75 = c(153, 1, 1, 1), GOOD_100 = c(237L, 1L, 1L, 1L), SALINE_0 = c(1L, 1L, 1L, 1

我的数据如下所示:

df <-data.frame(
  Group = c("1", "2", "3", "4"), 
  GOOD_0 = c(1L, 1L, 1L, 1L), 
  GOOD_25 = c(61.25, 1, 1, 1), 
  GOOD_50 = c(119, 1, 1, 1), 
  GOOD_75 = c(153, 1, 1, 1), 
  GOOD_100 = c(237L, 1L, 1L, 1L), 
  SALINE_0 = c(1L, 1L, 1L, 1L), 
  SALINE_25 = c(1, 40.25, 1, 22.5), 
  SALINE_50 = c(1, 86, 52.5, 122.5), 
  SALINE_75 = c(1, 136, 101.5, 269.25), 
  SALINE_100 = c(60L, 360L, 222L, 508L)
)

如果您稍微变换一下数据,就可以轻松地完成此操作。处理ggplot的最佳方法是将数据以长格式保存。因此,重新调整您的数据帧,使其看起来像这样,并添加一个列来标识它所属的组或组

我假设你的x变量是组,因为x在数据中不存在,就像你用aesx=x做的那样

最终数据帧

structure(list(Group = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 
4L), .Label = c("1", "2", "3", "4"), class = "factor"), Percentile_0 = c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L), Percentile_25 = c(61.25, 1, 1, 1, 
1, 40.25, 1, 22.5), Percentile_50 = c(119, 1, 1, 1, 1, 86, 52.5, 
122.5), Percentile_75 = c(153, 1, 1, 1, 1, 136, 101.5, 269.25
), Percentile_100 = c(237L, 1L, 1L, 1L, 60L, 360L, 222L, 508L
), grp = c("GOOD", "GOOD", "GOOD", "GOOD", "SALINE", "SALINE", 
"SALINE", "SALINE")), row.names = c(NA, -8L), class = "data.frame")

在aesx=x中。。。什么是x?@Croote Opps,那是一个小组。我编辑了这个问题。我想,所以,我发布了一个回复,它主要与数据形状有关,你可以使用重塑方法来实现与我暴力强迫的相同的事情,但是你的列名都不同,这让它有点棘手。我不确定为什么我在使用重命名时会出现这个错误:重命名中的错误,百分位0=盐水0,Percentile_25=SALINE_25,:未使用的参数Percentile_0=SALINE_0,Percentile_25=SALINE_25,Percentile_50=SALINE_50,Percentile_75=SALINE_75,Percentile_100=SALINE_100您是否更改了代码,我刚刚根据您提供的数据再次运行了它,它正常工作。可能指定dplyr::rename我刚刚从我的结果中添加了dput,用于新的\u dfit工作。不确定为什么R包没有正确加载。谢谢你的帮助。
GOOD <- df %>% select(Group, starts_with("GOOD")) %>% rename(Percentile_0 = GOOD_0, 
                                                     Percentile_25 = GOOD_25, 
                                                     Percentile_50 = GOOD_50, 
                                                     Percentile_75 = GOOD_75, 
                                                     Percentile_100 = GOOD_100) 
SALINE <- df %>% select(Group, starts_with("SALINE")) %>% rename(Percentile_0 = SALINE_0, 
                                                       Percentile_25 = SALINE_25, 
                                                       Percentile_50 = SALINE_50, 
                                                       Percentile_75 = SALINE_75, 
                                                       Percentile_100 = SALINE_100) 


new_df <- bind_rows(GOOD %>% mutate(grp = "GOOD"), SALINE %>% mutate(grp = "SALINE"))

new_df
# A tibble: 8 x 7
  Group Percentile_0 Percentile_25 Percentile_50 Percentile_75 Percentile_100 grp   
  <fct>        <int>         <dbl>         <dbl>         <dbl>          <int> <chr> 
1 1                1          61.2         119            153             237 GOOD  
2 2                1           1             1              1               1 GOOD  
3 3                1           1             1              1               1 GOOD  
4 4                1           1             1              1               1 GOOD  
5 1                1           1             1              1              60 SALINE
6 2                1          40.2          86            136             360 SALINE
7 3                1           1            52.5          102.            222 SALINE
8 4                1          22.5         122.           269.            508 SALINE
new_df %>% ggplot(aes(x = Group, group = grp, colour = grp)) +
           geom_boxplot(stat = "identity", 
                        aes(ymin = Percentile_0, lower = Percentile_25, middle = Percentile_50, upper = Percentile_75, ymax = Percentile_100))
structure(list(Group = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 
4L), .Label = c("1", "2", "3", "4"), class = "factor"), Percentile_0 = c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L), Percentile_25 = c(61.25, 1, 1, 1, 
1, 40.25, 1, 22.5), Percentile_50 = c(119, 1, 1, 1, 1, 86, 52.5, 
122.5), Percentile_75 = c(153, 1, 1, 1, 1, 136, 101.5, 269.25
), Percentile_100 = c(237L, 1L, 1L, 1L, 60L, 360L, 222L, 508L
), grp = c("GOOD", "GOOD", "GOOD", "GOOD", "SALINE", "SALINE", 
"SALINE", "SALINE")), row.names = c(NA, -8L), class = "data.frame")