草薙の研究ログ

英語の先生をやってます。

層別の記述統計

あるテストを実施したとき,クラスごとに合計得点をもとめたいとか,そういうことって外国語教育ではよくある(そういうことしかない気もする)。
男女とか,3クラスとかだったらね,記述統計をエクセルでそれぞれ手動でもとめてもいいかもだけど,20クラスとか100クラスとかあったらそれは大変だ(そんな大変でもないのだけど)。

Rでやろう。当たり前なんだけど,Rを使い始めのひとは,こういうところにつまずいちゃうのよね。

基本中の基本なんだけど,tapply関数ね。これ使えばだいたいいい感じ。

フィッシャーのあやめを題材にしよう。

フィッシャーのあやめっていうのは,3種類の品種のあやめ(setosaとvirginicaとあとなんか長い名前のひとつ)につき,ガクの長さと幅,花弁の長さと幅っていう4変数がある。

Rだと,

iris

ってやるとデータが入っているので見える。

ここで,品種ごとに,そうだな,ガクの長さの記述統計をそれぞれ知りたいってことにしよう。
こういうときは,

tapply(iris[,1],iris[,5],summary)

てやればいい。iris[,5]は品種の名前(カテゴリカル)。iris[,1]はガクの長さが入っているのね。
ガクの幅だったら,

tapply(iris[,2],iris[,5],summary)

みたいな。

基本は,tapply(適用したいベクトル,層別にしたいベクトル,適用したい関数)

ってことね。
これで例えば100クラスとかあっても大丈夫。