R×forcats::fct_lump_n 最も頻繁に出現する水準以外を「その他」にする

R言語のforcatsパッケージに含まれているfct_lump_min()関数について解説します。この関数は、「出現頻度(カウント)のトップ N 個のカテゴリだけを残して、残りのマイナーなカテゴリはすべて『その他』にまとめたい」ときに使える関数です。「データが何回出現したか」ではなく、「純粋に上位何位までを残すか」というランキング形式でデータを絞り込みたいときに最適な関数です。

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

概要

fct_lump_n()は、最も頻繁に出現する水準以外を「その他」にするための関数です。

使い方


fct_lump_n(
  f,
  n,
  w = NULL,
  other_level = "Other",
  ties.method = c("min", "average", "first", "last", "random", "max")
)

引数

f

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

n

正のnは、最も一般的なn値を保持します。負のnは、最も一般的でない-n値を保持します。同点の場合は、少なくともabs(n)値が得られます。

w = NULL

f内の(水準ではない)各値の頻度の重みを示すオプションの数値ベクトルを指定します。

other_level = “Other”

「その他」の値に使用される水準の値を指定します。
常に水準の最後に配置されます。

ties.method = c(“min”, “average”, “first”, “last”, “random”, “max”)

同点の処理方法を指定する文字列を指定します。

使用例

準備

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


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

最も頻繁に出現する水準以外を「その他」にする

最も頻繁に出現する水準以外を「その他」にするには次のようにします。


f <- factor(c(rep("A", 5), rep("B", 4), rep("C", 3), rep("D", 2)))
fct_lump_n(f, 2)

 [1] A     A     A     A     A     B     B     B     B     Other Other Other Other Other
Levels: A B Other

参考文献