我想问一下,对于下面的数据框,如何将所有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)
答案 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)')
或者,@ sulfelder
建议的多个组的更通用版本ggplot(dat, aes(x=factor(gsub("group ([A-Z]+).*", "\\1", dat$sample)), y=product1)) +
geom_boxplot()+
xlab('')+
ylab('unit(mg)')