R言語のforcatsパッケージに含まれているfct_match()関数について解説します。この関数は、「因子型変数の中に指定した値が含まれているかどうかを『安全に』チェックしたい」ときに使える関数です。「打ち間違いや存在しないカテゴリの指定をエラーで教えてくれる」という強力な安全装置がついています。
forcatsパッケージは、因子型(factor型)データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。
概要
fct_match()は、因子の値と文字列が一致するか判定するための関数です。一致したものがない場合にはエラーとなることにご注意ください。
使い方
fct_match(f, lvls)
引数
f
因子(または文字ベクトル)を指定します。
lvls
検索する水準の文字ベクトルを指定します。
戻り値
真偽値のベクトルを返します。
使用例
準備
あらかじめ、tidyverseパッケージまたはforcatsパッケージを読み込んでおきます。
# library(tidyverse)でもよい
library(forcats)
因子の値と文字列が一致するか判定する
因子の値とで文字列が一致するか判定するるには次のようにします。
f <- factor(c(rep("A", 5), rep("B", 5), rep("C", 2)))
fct_match(f, c("A", "B"))
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
一致したものがない場合にはエラーとなります。
f <- factor(c(rep("A", 5), rep("B", 5), rep("C", 2)))
fct_match(f, c("A", "Z"))
Error in `fct_match()`:
! All `lvls` must be present in `f`.
ℹ Missing levels: "Z"
Run `rlang::last_trace()` to see where the error occurred.