配列 (array) の基本
配列 (array) の基本
投稿日2017.10.4
リスト:異なるデータ構造をまとめて一つのオブジェクトとして保存.解析結果の多くはリスト形式.
配列:次元を自由に設定できるオブジェクト.
RのサンプルHairEyeColorを通して勉強していきます
> HairEyeColor , , 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
女性だけ取り出してみます
> HairEyeColor[,,2] 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
金髪の目の色のデータ
> HairEyeColor[4,,] Sex Eye Male Female Brown 3 4 Blue 30 64 Hazel 5 5 Green 8 8
青い目をした男性の髪の色データ
> HairEyeColor[,2,1] Black Brown Red Blond 11 50 10 30
HairEyeColorはどんあデータになっているのか?
> HairEyeColor[1:32] 32 53 10 3 11 50 10 30 10 25 7 5 3 15 7 8 36 66 16 4 9 34 7 64 5 29 7 5 2 14 7 8
それではこのベクトルからHairEyeColorを作ってみましょう
> dat <- c(HairEyeColor[1:32]) #ベクトルdatを作成 > dat [1] 32 53 10 3 11 50 10 30 10 25 7 5 3 15 7 8 36 66 16 4 9 34 7 64 5 29 7 5 2 14 [31] 7 8 > class(dat) [1] "numeric"
arrayを使用して多次元のクロス表を作成します(意外と簡単!)
> dat <- array(dat, dim = c(4,4,2)) > dat , , 1 [,1] [,2] [,3] [,4] [1,] 32 11 10 3 [2,] 53 50 25 15 [3,] 10 10 7 7 [4,] 3 30 5 8 , , 2 [,1] [,2] [,3] [,4] [1,] 36 9 5 2 [2,] 66 34 29 14 [3,] 16 7 7 7 [4,] 4 64 5 8
各項目の名前を付けます(日本語で・・・)
> name <- list(Hair=c("黒","茶","赤","金"),Eye=c("茶","青","榛","緑"),Sex=c("男性","女性")) > dimnames(dat)<-name > dat , , Sex = 男性 Eye Hair 茶 青 榛 緑 黒 32 11 10 3 茶 53 50 25 15 赤 10 10 7 7 金 3 30 5 8 , , Sex = 女性 Eye Hair 茶 青 榛 緑 黒 36 9 5 2 茶 66 34 29 14 赤 16 7 7 7 金 4 64 5 8
HairEyeColorとdatの構成要素を見てみます
> str(HairEyeColor) table [1:4, 1:4, 1:2] 32 53 10 3 11 50 10 30 10 25 ... - attr(*, "dimnames")=List of 3 ..$ Hair: chr [1:4] "Black" "Brown" "Red" "Blond" ..$ Eye : chr [1:4] "Brown" "Blue" "Hazel" "Green" ..$ Sex : chr [1:2] "Male" "Female" > str(dat) num [1:4, 1:4, 1:2] 32 53 10 3 11 50 10 30 10 25 ... - attr(*, "dimnames")=List of 3 ..$ Hair: chr [1:4] "黒" "茶" "赤" "金" ..$ Eye : chr [1:4] "茶" "青" "榛" "緑" ..$ Sex : chr [1:2] "男性" "女性"
多次元データdatを2次元の表にまとめてみます
> ftable(dat) Sex 男性 女性 Hair Eye 黒 茶 32 36 青 11 9 榛 10 5 緑 3 2 茶 茶 53 66 青 50 34 榛 25 29 緑 15 14 赤 茶 10 16 青 10 7 榛 7 7 緑 7 7 金 茶 3 4 青 30 64 榛 5 5 緑 8 8
石田 基広 ;改訂3版 R言語逆引きハンドブック ,シーアンドアール研究所; 改訂3版,2016