如何使用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")