忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

先に結論: 単にクロス集計表をつくるなら、Excelのピボットテーブルの方が楽

table, xtabs, ftableがある
組み込みデータフレームesophを使う
"agegp","alcgp","tobgp","ncases","ncontrols" の5列

table(esoph[c(1,2,3)])
1(agegp) が縦軸、2 (alcgp) を横軸にして、3 (tobgp) の群の数だけクロス集計表ができる
2元の集計表が複数ほしいときに使おう

xtabs(~ agegp + alcgp + tobgp, esoph)
上のtableと同じ表を返す
チルダの前にnumericの列をおくと、グループごとに数値を合計した結果が返される
xtabs(ncases ~ agegp + alcgp, esoph)

ftable(esoph[,1], esoph[,2], esoph[,3])
3元 (以上) の集計表をつくりたいときはこれ
一番最後の変数 (esoph[,3]) が横軸 (上) にきて、あとは左から並ぶ
row.vars=3, row.vars=c(1,3)...とかで左 (同様にcol.var...) にくる変数を選べる

小計欄が必要なときは
## 先にxtabsで2元のグラフをつくり、
xtbs <- xtabs(~ agegp + alcgp + tobgp, esoph)
## 合計欄を追加して
xmgn <- addmargins(xtbs)
## ftableに渡す
ftable(xmgn)
## ftableにaddmargins関数を使うとなぜか変数名が消えて行列になるのでやめよう

明らかにExcelのピボットテーブルの方が楽

ただ、xtabs, table関数の結果は"table"というクラスになり (xtabsは"xtabs"というのももつ)
summary(xtbs) としたり、chisq.test(xtbs) でカイ二乗検定を行えるのでその点は便利
chisq.testは2次元表しか対応してないため、3次元表も2次元行列と解釈してしまうが、summaryは3次元表としてカイ二乗検定をしてくれるそうだ (xtabsヘルプより)
(もちろんこのとき合計欄をつけてはいけない)

青木先生の関数を使うとファイ係数、一致係数、クラメール係数などが算出できる。感謝
phi, contingency, cramer, chisq

vcdパッケージについては今度調べよう
中澤先生のサイトに使用例あり。感謝
PR
Comment
Trackback
Trackback URL

Comment form
Title
Color & Icon Vodafone絵文字 i-mode絵文字 Ezweb絵文字  
Comment
Name
Mail
URL
Password
プロフィール
HN:
tao
HP:
性別:
非公開
職業:
会社員
趣味:
アウトドア、自転車、ジョギング、英語学習
自己紹介:
・千葉在住のサラリーマンです。データ分析っぽいことが仕事。
・今年英検1級取得。今はTOEIC高得点を目指して勉強中。
・興味のあることは野球、アウトドア、英語学習、統計、プログラミング、PC関係などなど。
ブログ内検索
freead
順位表
プロ野球データFreak
セリーグ順位表
パリーグ順位表