R 如何使用多列和参数创建一个方框图;“拆分”;

R 如何使用多列和参数创建一个方框图;“拆分”;,r,graphics,split,dataframe,boxplot,R,Graphics,Split,Dataframe,Boxplot,我需要从带有三个数字列的data.frame中创建一个方框图,并使用参数split通过绘制来分隔方框。我有一个大data.frame,但我需要的是下面的示例: paint<-c("blue", "black", "red", "blue", "black", "red", "blue", "black", "red") car1<-c(100, 138, 123, 143, 112, 144, 343, 112, 334) car2<-c(111, 238, 323, 541,

我需要从带有三个数字列的data.frame中创建一个方框图,并使用参数split通过绘制来分隔方框。我有一个大data.frame,但我需要的是下面的示例:

paint<-c("blue", "black", "red", "blue", "black", "red", "blue", "black", "red")
car1<-c(100, 138, 123, 143, 112, 144, 343, 112, 334)
car2<-c(111, 238, 323, 541, 328, 363, 411, 238, 313)
car3<-c(432, 123, 322, 342, 323, 522, 334, 311, 452)
data<-data.frame(paint, car1, car2, car3)

>data
      paint  car1 car2 car3
   1  blue   100  111  432
   2  black  138  238  123
   3  red    123  323  322
   4  blue   143  541  342
   5  black  112  328  323
   6  red    144  363  522
   7  blue   343  411  334
   8  black  112  238  311
   9  red    334  313  452

paint尝试先将数据放入长格式,然后打印:

temp = reshape(data, direction="long", varying=2:4, sep="")
boxplot(split(temp[,3], temp[,1]))
# boxplot(car ~ paint, data=temp) ### Formula notation, easier to read

或者,使用
lattice

library(lattice)
bwplot(car1 + car2 + car3 ~ paint, data=data)
不过,我不确定为什么这个符号不能与基本R的
boxplot
配合使用

更新 如果我误解了您的原始问题(在阅读Roman的评论后),这里有一个选项(再次使用
晶格
),它将
car1
car2
car3
的箱线图分别并排放置。这使用在第一个示例中创建的长格式数据
temp

bwplot(car ~ paint | paste0("Car ", time), data = temp)

您希望图形是什么样子?x轴上有什么?每种颜色有三个箱线图(用于car1、car2和car3)?我怀疑这最后三个面板点阵图是OP想要的。@RomanLuštrik,我在读了你的评论后想到的@RhinoBR,如果您希望为每辆车单独绘制,而不是此面板输出,您也可以使用原始数据执行此操作:
lappy(数据[-1],函数(x)箱线图(x~data$paint))