jnobuyukiのブログ

研究していて困ったことやその解決に関するメモ。同じように困ったあなたのために。twitter ID: @j_nobuyuki

R言語で数量データをカテゴリーデータに変換

前回データハンドリングとその方法について考えました。webbeginner.hatenablog.com

今回は、データハンドリングに利用できる関数としてcut関数を取り上げ、使用上のポイントをまとめます。

cut関数

cut関数は、数量データをカテゴリーデータに変換するときに使えます。引数は

  • x 数量データのオブジェクト
  • breaks 分割方法の指定
  • right カテゴリーの上限の値を含むかどうか(デフォルトはTRUE)
  • labels 自分で指定したカテゴリー名

なんかがあります。

breaksの使い方

breaksは2通りの指定方法があります。

  • 整数1つで、カテゴリーの数を指定する。カテゴリーの境界値は、カテゴリー内の要素数のバランスを見て適当に決められます。
data <- seq(1:10)
categoryData <- cut(data, breaks = 2)
print(categoryData)
  • 境界値を示すベクトルを指定する。3つのカテゴリーなら4つの値を含むベクトルを指定します。
data <- seq(1:10)
categoryData <- cut(data, breaks = c(0,3.5,7,10.5))
print(categoryData)

rightをFALSEに

rightのデフォルト値はTRUEなのですが、これだとカテゴリーの下限値を含まず、上限値を含むことになります。一方、度数分布表などでは、カテゴリーの境界値は下限値を含み、上限値を含まないことが典型的です(~以上~未満の形です)。これを実現するためにrightをFALSEにします。

data <- seq(1:10)

#right = TRUEの場合
categoryData <- cut(data, breaks = c(0,5,11), right = TRUE)
print(cateogryData)

#right = FALSEの場合
categoryData <- cut(data, breaks = c(0,5,11), right = FALSE)
print(cateogryData)

labelsを指定する

labelsで各カテゴリーに名前を付けると便利です。

data <- seq(1:10)
categoryData <- cut(data, breaks = c(0,5,11), right = FALSE, labels = c("hight", "low"))
print(categoryData)

おまけ:plot関数との組み合わせ

cut関数はplot関数と組み合わせて使うと、各カテゴリーの度数を示すグラフを簡単に描けます。

data <- seq(1:10)
categoryData <- cut(data, breaks = c(0,5,11), right = FALSE, labels = c("high", "low"))
plot(categoryData)