R初心者として、cut関数がいまいち分かりにくかったので、ここで少しまとめておく。
■cut関数は何をする関数?
一言でいうと「数値データを、指定した分割基準でカテゴリに変換する関数」だ。
もう少し詳しくいうと、例えば英語の試験を行い各人の試験結果を
> x <- c(90, 55, 79, 80, 100)
とする。80点未満を「不合格」、80点以上を「合格」と分けるとすると、xの変数の内容を「合格、不合格、不合格, 合格、合格」と変換したfactor型のオブジェクトを返すのがcut関数だ。
■実際にcut関数を動かしてみる。
上記の例を実際にR上で行ったのが以下。
> x <- c(90, 55, 79, 80, 100)
> cut(x,breaks=c(0,80,100), labels=c("不合格","合格"), right = FALSE, include.lowest = TRUE)
[1] 合格 不合格 不合格 合格 合格
Levels: 不合格 合格
> cut(x,breaks=c(0,80,100), labels=c("不合格","合格"), right = FALSE, include.lowest = TRUE)
[1] 合格 不合格 不合格 合格 合格
Levels: 不合格 合格
点数が先ほどの基準に従ってカテゴリ(合格、不合格)に変換されているのが分かる。
■right = FALSEのオプションは?
先のcut使用例で「right=FALSE」のオプションをしている。この説明をしなければならない。
cutのデフォルト動作は、例えばbreaks=c(0,80,100)と指定した場合、
ここで丸括弧は開区間、角括弧は閉区間を示す。でも今回は
80点未満を不合格、80点以上を合格としたいから、
■include.lowest = TRUEのオプションは?
先のright=FALSEだけでは「100」がカテゴリ分けに含まれない。そこでカテゴリ分けの末端の開区間を閉区間にし、今回の例では100をカテゴリに含むようにするのが、このオプション。
「right = FALSE」「include.lowest = TRUE」を指定することで、今回我々が望む
■right = FALSEのオプションは?
先のcut使用例で「right=FALSE」のオプションをしている。この説明をしなければならない。
cutのデフォルト動作は、例えばbreaks=c(0,80,100)と指定した場合、
- (0,80]の区間を不合格
- (80,100]の区間を合格
ここで丸括弧は開区間、角括弧は閉区間を示す。でも今回は
80点未満を不合格、80点以上を合格としたいから、
- [0,80)の区間を不合格
- [80,100)の区間を合格 (注:ここで100がカテゴリ分けに入らないのは後述)
■include.lowest = TRUEのオプションは?
先のright=FALSEだけでは「100」がカテゴリ分けに含まれない。そこでカテゴリ分けの末端の開区間を閉区間にし、今回の例では100をカテゴリに含むようにするのが、このオプション。
「right = FALSE」「include.lowest = TRUE」を指定することで、今回我々が望む
- [0,80)の区間を不合格
- [80,100]の区間を合格
というカテゴリ分けが実現できる。
ほかのよりわかりやすかったです
返信削除阿部葉月さん、
返信削除コメントありがとうございます!
お役にたてたなら嬉しいです!