2012-10-29 28 views
4

我在单个图中制作多重盒图时遇到了麻烦...... 我有五个变量,三个是数字,另外两个是因子。我想要所有三个数值变量的boxplot,但是由两个因子变量分组...剧情应该有两组,分别是Low和High,三组分别是MM,ND和BB。传说应该包含MM,ND和BB的缩写。根据两个条件分组的多个箱子

Group Class Sal Wal Daa 
MM Low 21 34 4 
ND Low 23 65 3 
BB High 21 34 2 
MM High 25 23 4 
MM High 23 23 5 
MM High 13 54 6 
MM High 56 32 4 
MM Low 34 13 3 
ND Low 12 35 7 
ND Low 34 34 2 
ND Low 54 54 1 
ND High 32 34 6 
ND High 43 32 7 
BB Low 54 13 3 
BB Low 12 56 2 
BB Low 45 34 6 
BB High 32 32 3 
BB High 13 12 2 
BB High 54 12 5 

回答

6

如果你想有箱线图每个数字变量的一个独立的组,则可以通过集团和阶级使用interaction()功能组变量:

test.data <- data.frame(Sal=rnorm(100), 
         group=factor(sample(LETTERS[1:3], 100, replace=TRUE)), 
         class=factor(sample(c("low","high"), 100, replace=TRUE))) 
boxplot(Sal ~ interaction(group,class), data=test.data) 
+6

'interaction'是没有必要的,'箱线图(SAL〜组+类)'将做同样 – TMS

+0

我添加组的“视觉分离”,只需添加'boxwex = 0.2,在= c(0.4,1,1.6,3.4,4,4.6)' –

2

您需要先重新排列数据:

dta <- read.table(text="Group Class Sal Wal Daa 
    MM Low 21 34 4 
    ND Low 23 65 3 
    BB High 21 34 2 
    MM High 25 23 4 
    MM High 23 23 5 
    MM High 13 54 6 
    MM High 56 32 4 
    MM Low 34 13 3 
    ND Low 12 35 7 
    ND Low 34 34 2 
    ND Low 54 54 1 
    ND High 32 34 6 
    ND High 43 32 7 
    BB Low 54 13 3 
    BB Low 12 56 2 
    BB Low 45 34 6 
    BB High 32 32 3 
    BB High 13 12 2 
    BB High 54 12 5", header=TRUE) 
dtaLong <- stack(dta, select=cbind(Sal, Wal, Daa)) 
dtaLong <- data.frame(dtaLong, dta[,1:2]) 

现在ind是一个新的因素,用于识别原始数据集中三个变量的值。

library(lattice) 
bwplot(values~ind | Group + Class, data=dtaLong)