我的表格中有我的数据,每列都有可变的观察结果,如下所示:
a b c d e f g
0 0 0 0 2 0 2
4 182 44 82 73 22 37
76 3 101 15 42 94 15
17 151 102 10 44 2 36
88 32 42 32 79 92 50
30 10 10 121 11 0 64
39 2 25 42 73 15 34
92 13 56 37 21 148 238
31 1 12 366 196 102 55
2 113 141 6 70 89 0
22 53 4 53 119 11 26
37 268 5 7 75 264
10 2 33 29 40 179
67 23 61 25 61 168
111 21 36 32 47 70
28 17 311 11 21 38
10 63 52 17 71 15
72 11 27 67 14 118
17 84 92 1 58 14
89 29 85 25 17
20 8 40 67 95
23 12 41 40 3
324 3 13 18 27
8 23 113 25
22 3 165 13
133 63
12 31
22 68
65
我的eac专栏有不同数量的观察结果。
现在我可以做一个正常的箱线图构建:
d1<-read.table("file.txt",header=T)
boxplot(d1,outline=F)
但是在这里我希望我的盒子按照它们的中位数排列,而不是按照它们在我的数据框中出现的顺序排列。
任何建议?
谢谢
答案 0 :(得分:2)
您可以在绘制中位数之前对data.frame进行排序。然后boxplot
将按照您的预期方式运作:
d1 <- read.table(header=TRUE, sep=";", text=
"a ;b ;c ;d ;e ;f ;g
0 ;0 ;0 ;0 ;2 ;0 ;2
4 ;182;44 ;82 ;73 ;22 ;37
76 ;3 ;101;15 ;42 ;94 ;15
17 ;151;102;10 ;44 ;2 ;36
88 ;32 ;42 ;32 ;79 ;92 ;50
30 ;10 ;10 ;121;11 ;0 ;64
39 ;2 ;25 ;42 ;73 ;15 ;34
92 ;13 ;56 ;37 ;21 ;148;238
31 ;1 ;12 ;366;196;102;55
2 ;113;141;6 ;70 ;89 ;0
22 ;53 ;4 ;53 ;119;11 ;26
37 ;268;5 ;7 ;75 ;264;
10 ;2 ;33 ;29 ;40 ;179;
67 ;23 ;61 ;25 ;61 ;168;
111;21 ;36 ;32 ;47 ;70 ;
28 ;17 ;311;11 ;21 ;38 ;
10 ;63 ;52 ;17 ;71 ;15 ;
72 ;11 ;27 ;67 ;14 ;118;
17 ;84 ;92 ;1 ;58 ;14 ;
89 ;29 ; ;85 ;25 ;17 ;
20 ;8 ; ;40 ;67 ;95 ;
23 ;12 ; ;41 ;40 ;3 ;
324;3 ; ;13 ;18 ;27 ;
8 ; ; ;23 ;113;25 ;
22 ; ; ;3 ;165;13 ;
133; ; ; ;63 ; ;
12 ; ; ; ;31 ; ;
22 ; ; ; ;68 ; ;
65 ; ; ; ; ; ; ")
d2 <- d1[, names(sort(sapply(d1, median, na.rm=TRUE))) ]
boxplot(d2)