【R備忘録】カテゴリ変数(factor、因子)の順序を逆転させる

Rでカテゴリ変数(factor、因子)の順序を逆転させる方法についてメモを残します。

ggplotでfactorを軸にプロットしようとしたとき、その順序をコントロールしたい、特に順番を逆転させたいということがあります。
例えば次のようにcoord_flipでグラフを回転させた場合、順番が先の方が下に表示されます。
本当は上から順番にプロットしたい。

library(dplyr)
library(ggplot2)
diamonds$cut %>% levels
#[1] "Fair"      "Good"      "Very Good" "Premium"   "Ideal"
diamonds %>%
   ggplot(aes(cut, carat)) +
     geom_boxplot() +
     coord_flip()
ダイヤモンドのカラットの箱ひげ図。カット別

なおggplotではfactorの順序はプロットの順序とは関係がなく、levelsの並び順で表示されます。

上から順番にプロットするためには、factorの順序を逆転させる必要があります。
それは関数reorderを使って次のように実現できます。

diamonds %>%
  mutate(cut = reorder(cut, as.numeric(cut) * -1)) %>%
  ggplot(aes(cut, carat)) + 
    geom_boxplot() +
    coord_flip()
ダイヤモンドのカラットの箱ひげ図。カット別。ただし上から順に低位のカットを並べる

参考

x軸を並べ替えたい – Qiita

コメントを残す