R×forcats::fct_drop 未使用の因子水準を削除する

R言語のforcatsパッケージに含まれているfct_drop()関数について解説します。この関数は、「データ内に1件も存在しない『不要な(空の)水準(レベル)』を自動で削除したい」ときに使える関数です。データをフィルタリング(抽出)した後に、元のデータに残っていた「使われていないカテゴリ名」をきれいに掃除するのに必須の関数です。

forcatsパッケージは、因子型(factor型)データを操作するための強力で便利な関数を多く取り扱っています。また、Rのデータサイエンス向け主要パッケージ群であるtidyverseパッケージにも含まれています。

概要

fct_drop()は、未使用の因子水準を削除するための関数です。fct_drop()は、base::droplevels()と比較すると、値を持つNA因子水準は削除されません。

使い方


fct_drop(f, only = NULL)

引数

f

因子(または文字ベクトル)を指定します。

only = NULL

削除する因子水準のセットを制限する文字ベクトルを指定します。
指定すると、エントリがなく、このベクトルに現れる因子水準のみが削除されます。

使用例

準備

あらかじめ、tidyverseパッケージまたはforcatsパッケージを読み込んでおきます。


# library(tidyverse)でもよい
library(forcats)

解説のために、次の因子を使用します。


f <-  fct(c("a", "b"), levels = c("a", "b", "c", "d"))

未使用の因子水準を削除する

因子fに対して、未使用の因子水準を削除するには次のようにします。


fct_drop(f)

[1] a b
Levels: a b

因子fに対して、未使用の因子水準"c"のみを削除するには次のようにします。


fct_drop(f, only = "c")

[1] a b
Levels: a b d

参考文献