セクシーデータサイエンス

データ解析やプログラミングを勉強する日記!

クロス集計表

統計解析ソフトR
クロス集計

2つ以上の条件があって、それぞれの条件に当てはまる組み合わせの人が何人いるか〜 という表。

集計はロジスティック回帰分析などに必要そう。

これを集計すると

# mihon
 Hair   Eye    Sex
1 Brown Hazel   Male
2 Brown Brown Female
3 Brown Brown   Male
4 Black Brown Female
5 Brown  Blue Female
6 Blond  Blue   Male
:
:

⬇️

> table(mihon)
, , Sex = Male

       Eye
Hair    Brown Blue Hazel Green
  Black    32   11    10     3
  Brown    53   50    25    15
  Red      10   10     7     7
  Blond     3   30     5     8

, , Sex = Female

       Eye
Hair    Brown Blue Hazel Green
  Black    36    9     5     2
  Brown    66   34    29    14
  Red      16    7     7     7
  Blond     4   64     5     8


> class(table(mihon))
[1] "table"

素敵!
クラスはtableでした。

集計表からデータを復元

使う場面がすぐに思いつかないけど、元データが作れる

R備え付けの見本データ、HairEyeColorが多重クロス集計表。

まずtable をデータフレームにすると、頻度Freq列が登場。

> HEC <- data.frame(HairEyeColor)
> head(HEC)
    Hair   Eye    Sex Freq
1  Black Brown   Male   32
2  Brown Brown   Male   53
3    Red Brown   Male   10
4  Blond Brown   Male    3
5  Black  Blue   Male   11
6  Brown  Blue   Male   50

(Black Brown Male ) を32個、(Brown Brown Male)を53個、... 作ると、集計前のデータが再現できる

> HEC2 <- data.frame(lapply(HEC, function(i) rep(i, HEC[,"Freq"]))[-4])
> head(HEC2)
   Hair   Eye  Sex
1 Black Brown Male
2 Black Brown Male
3 Black Brown Male
4 Black Brown Male
5 Black Brown Male
6 Black Brown Male

感想

外観をみるときはとりあえずsummary 使ってたけど、性質で分かれるようなデータならtable もよさそう。
(まで書いて、よく見るのは数値だからsummaryしてるんだったと思い出した)
実データの復元は本にあって面白かったけど、使い道はRの練習くらい?