R言語のforcatsパッケージに含まれているfct_relabel()関数について解説します。この関数は、「関数(ラムダ式など)を使って、因子型(factor)のすべてのレベル名を一括で自動変換したい」ときに使える関数です。手動で1つずつ名前を指定するfct_recode()とは異なり、「文字を一斉に小文字にする」「特定の文字を一括で置換する」といったルール(関数)を適用できるのが強みです。
forcatsパッケージは、因子型(factor型)データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。
概要
fct_relabel()は、必要に応じて関数を使用して因子水準を再ラベル付けするための関数です。
使い方
fct_relabel(.f, .fun, ...)
引数
f
因子(または文字ベクトル)を指定します。
.fun
各因子水準に適用される関数を指定します。
1つの文字引数を受け取り、入力と同じ長さの文字ベクトルを返す必要があります。~ を使って(purrr のような)ショートカットを作成することもできます。~paste(., “x”)は、function(.)paste(., “x”)と同等です。
…
funのための追加の引数を指定します。
使用例
準備
あらかじめ、tidyverseパッケージまたはforcatsパッケージを読み込んでおきます。
# library(tidyverse)でもよい
library(forcats)
具体例で使用する変数を準備します。
f <- fct(c("A", "B", "C", "D", "E"))
f
[1] A B C D E
Levels: A B C D E
因子水準を再ラベル付けする
因子水準を再ラベル付けするには次のようにします。
fct_relabel(f, ~ paste("X", ., sep = "_"))
[1] X_A X_B X_C X_D X_E
Levels: X_A X_B X_C X_D X_E