R×forcats::fct_cross 複数の因子水準を組み合わせる

R言語のforcatsパッケージに含まれているfct_cross()関数について解説します。この関数は、「2つの因子型(factor)データを掛け合わせ、すべての組み合わせを表現した『新しい1つの因子型データ』を作りたい」ときに使える関数です。2つのカテゴリ変数の「交差(クロス)」を表現するユニークな因子水準を自動で生成してくれる関数です。

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

概要

fct_cross()は、2つ以上の因子水準を組み合わせて新しい因子を作成するための関数です。fct_cross()は、入力する因子水準のすべての組み合わせである水準を持つ因子を計算します。

使い方


fct_cross(..., sep = ":", keep_empty = FALSE)

引数

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

sep = “:”

因子水準の区切り文字列を指定します。

keep_empty = FALSE

TRUEの場合、観測値のない組み合わせを因子水準として保持します。

使用例

準備

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


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

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


device <- fct(c("desktop", "desktop", "desktop", "laptop", "laptop"))
cpu <- fct(c("intel", "intel", "amd", "amd", "intel"))

複数の因子水準を組み合わせる

因子devicecpuに対して、因子水準を組み合わせるには次のようにします。


fct_cross(device, cpu)

[1] desktop:intel desktop:intel desktop:amd   laptop:amd    laptop:intel 
Levels: desktop:intel laptop:intel desktop:amd laptop:amd

参考文献