R言語で、複数の因子(ファクター)の因子水準を組み合わせる方法について解説します。因子の操作には、tidyverseパッケージに含まれているforcatsパッケージを使用するのが便利です。ここでは、forcatsパッケージのfct_cross()を使用した方法についてお伝えします。

fct_cross()の概要

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

fct_cross()の使い方

forcats::fct_cross()の使い方は次になります。


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

fct_cross()の引数の意味

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

sep = “:”

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

keep_empty = FALSE

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

準備

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


library(tidyverse)

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


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

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

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


fct_cross(device, cpu)

[1] desktop:intel desktop:intel desktop:amd   laptop:amd    laptop:intel 
Levels: desktop:intel laptop:intel desktop:amd laptop:amd
R×forcats::fct_cross 複数の因子水準を組み合わせる