読者です 読者をやめる 読者になる 読者になる

ルビスコくん空を飛ぶ

大学院生(M2)の日記です.日記に加えてプログラム(R)のメモ書きもします.

データセットにおける数値のカテゴリ化

R

データセットのなかのある変数でデータを区切り,区間化してカテゴリに変換する方法.Rにデフォルトで組み込まれているデータセットairquality(ニューヨークの大気状態観測値.1973 年5~9月の1日ごとに4つの変数がある.変数は下図の通り)を用いる.今回はTempでカテゴリ化する.

f:id:pam715:20160621112921p:plain図1

f:id:pam715:20160621113249p:plain図2

Tempは最小値56,最大値97だから,~70, 70~80, 80~90, 90~の4つのカテゴリにわけることにする.数値のカテゴリ化にはcut()関数を用いる.breakで区切りたい区間を指定,labelでカテゴリの名前を決める.

x <- cut(airquality$Temp, breaks=c(50, 70, 80, 90, 100), labels=c("~50", "50~60", "60~70", "70~"), right=FALSE,ordered_result=TRUE)

ここで注意するのは,break=c()の中の最小値と最大値(ここでは50と100)が必ずカテゴリ化したいデータの最小値と最大値よりも小さい,あるいは大きいこと.50~100の間にすべての数値が含まれていないとbreakの数とlabelの数に不一致が生じてエラーとなる.

図3が結果.数値のデータが,自分がつけた4種類のlabelに変換されている.

f:id:pam715:20160621115340p:plain図3

これをつかえば,グラフで温度ごとに色分けしたいときに便利である.

f:id:pam715:20160621120348p:plain

Solar.RとOzoneの関係が気温ごとにどのように変わるかわかる.下の図だと,同じ太陽放射でも気温が高いときのほうがOzone濃度は高くなっていることがわかる.

f:id:pam715:20160621120417p:plain