R言語のtable関数はクロス集計のために用いられる関数である。Excelではピボットテーブルに相当する機能である。呼び出しの形式は以下の通りである。
table(..., exclude = if (useNA == "no") c(NA, NaN), useNA = c("no","ifany", "always"),
dnn = list.names(...), deparse.level = 1)
多くの場合、オプションは気にしなくても良いようである。単純な使い方から順に説明する。
1つのカテゴリ変数をtable関数に与えると、カテゴリごとの集計が行われる。次の例を見て欲しい。
> table(state.region) # アメリカ50州の国勢調査対象地域の分類
# 地域ごとの集計結果が出力される
state.region
Northeast South North Central West
9 16 12 13
> table(rbinom(10,1,0.5)) # 0,1が0.5の割合で現れる2項分布から10個データをランダムに生成
# 0,1になった個数が、それぞれ3、7であったことを示している(ランダムなので結果は毎回異なる)
0 1
3 7
2変数を与えるとクロス集計もできる。
# state.x77はアメリカ50州のデータ。平均所得の範囲を確認
> range(state.x77[,"Income"])
[1] 3098 6315
# 1000刻みで数値をカテゴリに変換する
> state.income <- cut(state.x77[,2],breaks=seq(from=3000,to=7000,by=1000))
> table(state.income,state.region)
state.region
state.income Northeast South North Central West
(3e+03,4e+03] 2 10 0 1
(4e+03,5e+03] 5 5 10 9
(5e+03,6e+03] 2 1 2 2
(6e+03,7e+03] 0 0 0 1
この表から、南部の収入がやや低い傾向を窺うことができる。余談ではあるが、1人当たりの平均所得が一番高い州(上の表では右下の1のこと)はアラスカであった。資源が豊富で、油田による収益が大きいのがその理由である。

0 件のコメント:
コメントを投稿