前回データハンドリングとその方法について考えました。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)