Rを使用して、中央値で並べ替えられた一連の箱ひげ図を作成したいと思います。次に、私が実行するとします:
boxplot(cost ~ type)
これにより、コストがy軸に表示され、タイプカテゴリがx軸に表示される場合、いくつかの箱ひげ図が得られます。
----- -----
| |
[ ] |
| [ ]
| |
----- -----
A B
ただし、私が欲しいのは、最高値から最低値までの中央値でソートされた箱ひげ図です。私の疑いは、タイプ(AまたはB)のラベルを変更して、中央値の最小値と最大値を数値で示すことですが、問題を解決するためのより賢明な方法があるかどうかと思います。
チェックアウト ?reorder
。例はあなたが望むもののようですが、逆の順序でソートされています。私が変更され -count
下の最初の行で、必要な順序で並べ替えます。
bymedian <- with(InsectSprays, reorder(spray, -count, median))
boxplot(count ~ bymedian, data = InsectSprays,
xlab = "Type of spray", ylab = "Insect count",
main = "InsectSprays data", varwidth = TRUE,
col = "lightgray")
はい、それはアイデアです:
> set.seed(42) # fix seed
> DF <- data.frame(type=sample(LETTERS[1:5], 100, replace=TRUE),
+ cost=rnorm(100))
>
> boxplot(cost ~ type, data=DF) # not ordered by median
>
> # compute index of ordered 'cost factor' and reassign
> oind <- order(as.numeric(by(DF$cost, DF$type, median)))
> DF$type <- ordered(DF$type, levels=levels(DF$type)[oind])
>
> boxplot(cost ~ type, data=DF) # now it is ordered by median
欠損値に注意してください。値を機能させるには、na.rm = TRUE
を追加する必要があります。そうでない場合、コードは単に機能しません。それを見つけるのに何時間もかかりました。
bymedian <- with(InsectSprays, reorder(spray, -count, median, **na.rm = TRUE**)
boxplot(count ~ bymedian, data = InsectSprays,
xlab = "Type of spray", ylab = "Insect count",
main = "InsectSprays data", varwidth = TRUE,
col = "lightgray")