从绘图箱图中的列重新组合元素

时间:2015-07-13 18:17:17

标签: r ggplot2

我想问一下,对于下面的数据框,如何将所有As组合到groupA,将所有B组合到第一列中的groupB,然后在数字的数字上绘制两个箱图?

数据框如下:

sample  product1    product2    product3    product4    product5
group A1    1   1   2   0.1 0.2
group A1    3   3   4   0.2 0.5
group A1    2   5   6   0.7 0.6
group A1    7   6   7   0.8 0.7
group A2    6   2   1   0.5 0.2
group A2    7   4   2   0.4 0.4
group A3    8   7   2   0.3 0.5
group A3    9   8   6   0.2 0.3
group A3    5   2   6   0.2 0.2
group A3    6   3   7   0.1 0.1
group B1    6   5   8   0.6 0.9
group B1    2   7   9   0.7 0.7
group B1    3   9   4   0.9 0.8
group B1    1   2   5   0.2 0.6
group B2    5   2   2   0.3 0.5
group B2    7   3   4   0.5 0.5
group B2    8   1   3   0.5 0.4
group B2    9   1   3   0.7 0.3

代码只按原样绘制第一列中的每个符号,但我不知道如何组合。谢谢你的帮助。

 pproduct1 = ggplot(data=df,aes(x=factor(sample),y=product1))+
                geom_boxplot()+
                xlab('')+
                ylab('unit(mg)')
show(pproduct1)

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式将行与A和B匹配

ggplot(dat, aes(x=factor(grepl("group A", sample), labels=c("A", "B")), y=product1)) +
                geom_boxplot()+
                xlab('')+
                ylab('unit(mg)')

enter image description here

或者,@ sulfelder

建议的多个组的更通用版本
ggplot(dat, aes(x=factor(gsub("group ([A-Z]+).*", "\\1", dat$sample)), y=product1)) +
                geom_boxplot()+
                xlab('')+
                ylab('unit(mg)')