fct_reorder()の概要
fct_reorder()は、 別の変数を利用して因子水準を並び替えるための関数です。fct_reorder() は、因子が位置にマッピングされている1次元表示に便利です。fct_reorder2() は、因子が位置に依存しない外観にマッピングされている2次元表示に便利です。last2()とfirst2()は、fct_reorder2()のヘルパーです。last2()はxでソートされたyの最後の値を検索し、first2() は最初の値を検索します。
fct_reorder()の使い方
fct_reorder(
.f,
.x,
.fun = median,
...,
.na_rm = NULL,
.default = Inf,
.desc = FALSE
)
fct_reorder2(
.f,
.x,
.y,
.fun = last2,
...,
.na_rm = NULL,
.default = -Inf,
.desc = TRUE
)
last2(.x, .y)
first2(.x, .y)
fct_reorder()の引数
因子(または文字ベクトル)を指定します。
fの因子は、fct_reorder()の場合は.fun(.x)、とfct_reorder2()の場合はfun(.x, .y)の値が昇順になるように並べ替えられます。
fの因子は、fct_reorder()の場合は.fun(.x)、とfct_reorder2()の場合はfun(.x, .y)の値が昇順になるように並べ替えられます。
nサマリー関数を指定します。
fct_reorderの場合は1つのベクトル、fct_reorder2の場合は2つのベクトルを受け取り、1つの値を返します。
.funに渡す引数を指定します。
欠損値を削除するかどうかを指定します。
NULL(デフォルト)の場合、欠損値は警告とともに削除されます。NAを保持するにはFALSEに設定し(.fun が既に NA を処理している場合)、警告なしで削除するにはTRUEに設定します。
空のレベルの.funにはどのようなデフォルト値を使用するかを指定します。
これを使用して、出力内で空のレベルが表示される場所を制御します。
降順で並び替えるかを指定します。
凡例の要素のデフォルトの順序と一致させるために、fct_reorderとfct_reorder2のデフォルトは異なることに注意してください。
準備
あらかじめ、tidyverseパッケージを読み込んでおきます。
library(tidyverse)
解説のために、次の因子を使用します。
df <- data.frame(x = runif(20, min = 1, max = 5),
f = fct(letters[floor(runif(20, min = 1, max = 5))]))
df
x f
1 3.618896 d
2 2.412789 b
3 2.081041 b
4 4.970736 a
5 3.533973 d
6 1.852833 b
7 1.517489 c
8 2.912472 a
9 4.696298 a
10 3.395044 c
11 4.904683 c
12 3.927170 a
13 2.426908 a
14 2.725895 c
15 1.592846 d
16 1.052310 c
17 3.862264 c
18 1.412737 c
19 2.785137 d
20 3.560404 c
df$f
[1] d b b a d b c a a c c a a c d c c c d c
Levels: d b a c
使用例
データフレームdfについて、f列の因子水準ごとにx列の平均値を算出し、その平均値の並び順をf列の因子水準に適用するには次のようにします。
fct_reorder(df$f, df$x, .fun = mean)
[1] d b b a d b c a a c c a a c d c c c d c
Levels: b c d a