Last updated: October 2008. Kajiyama                    [ 目次に戻る ]

カテゴリ化した変数からクロス表(分割表)を作成する


  1. カテゴリ化した変数からクロス表(分割表)を作成する

    クロス表を作成するtable関数

    table( データフレーム名 $ 変数名m, データフレーム名 $ 変数名n )

    table( データフレーム名 [ c ( 列番号m, 列番号n ) ] )


  2. カテゴリ化した変数のデータフレームをRに読み込む


    2.1. 変数がカテゴリのデータフレーム

    Rに,「データフレーム」であることを理解させるためには,あなたが以下のルールを遵守すること.

    1. データは,行と列で構成し,行はサンプル(観測値),列はサンプルの変数を表す.

    2. データの第1行は,必ず,変数名のリストにする.

    3. 行列の表で,行にはサンプルが並び,列にはその変数が並ぶ.

    4. 縦の列ごとに変数(項目あるいはアイテム)の値が並び,変数の値は「文字列」型あるいは「カテゴリ」型である.

    5. Rのデータフレームとしてよみこまれると,「サンプル番号」は自動的につけられ,サンプルの値とはみなさない.

    6. 行列に空欄は作らない.この「欠損値」には, Rでは NA を入れる.Not Availableの略がNA.

    7. 変数名は英字で始まり,英数字とピリオドが使える.頭に数字を置かない. 「架空データ1」は良い,「1架空データ」はだめ.

    8. 英字は大文字と小文字が区別される.

    9. 変数名には空白は使えない,名前のつなぎには,ピリオドを用いる. read.table

    10. 変数名やその値には日本語(漢字,ひらがな,カタカナ,全角記号)を使うことができる.

      ただし,Rが文字コードの関係で正しく理解できず,次のようなエラーが発生することがある.
      まずは変数名を修正して再挑戦するように.

      以下にエラー scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  :  '1' 行目には,4 個の要素がありません


    表1  「あやめ_csv.csv」のデータフレーム ( 150個のサンプル )

     ・ ダウンロードし,解凍して「R_ANALYSIS」フォルダに保存

      3品種混合のデータフレーム「あやめ_csv.csv」 [ ayame_csv.EXE ダウンロード ]


    2.2. 「あやめ_csv.csv」データフレームの読み込み

    ・「R_ANALYSIS」フォルダにある,エクセルの表計算シート「あやめ_csv.csv」を読み込む操作を行う.

    (1) 操作の手順


            ・・・・・・・・・・



    (2) データの読み込み

    Rの「コンソール」画面に,

    A <- read.csv("あやめ_csv.csv") #  と記述し,

    「あやめ_csv.csv」データファイルを,Rの内部のデータフレーム,ファイル名 A に直接読み込む.

    header=TRUE は第1行が列の変数名になっていることを指示している.


    (3) 読み込んだデータフレームの確認

    A #  と記述し,Rの内部に作成したデータフレーム A を,表示し確認する.


    (4) データフレームの構造確認

    str (A) #  と記述し,Rの内部のデータフレーム A の変数の内容を表示確認する.

    Rが理解した,変数名の5つのリストと変数ごとのカテゴリの数とカテゴリ名が示される.

    ・変数名とカテゴリ名はRが理解した名前を使用する.


  3. 変数名を使ったクロス表の作成

    3.1. 「Sepal.Length」と「Sepal.Width」の変数名を使った操作の手順




    3.2. table( データフレーム名 $ 変数名m, データフレーム名 $ 変数名n )

    ・クロス表を作成するには table関数を使用する.

    A2 <- table(A $ Sepal.Width, A $ Sepal.Length) #  と記述し,Rに変数[1]Sepal.Lengthと変数[2]Sepal.Widthのクロス表 A2 を作成させる.

    A2 #  と記述し,クロス表 A2 を表示確認する.


  4. 合計欄付き クロス表の作成

    注意 Rの統計解析では,合計欄のないクロス表を使用する.

    4.1. 操作の手順




    4.2. 合計欄の計算

    A3 <- addmargins(A2) #  と記述し,> 変数[1]と変数[2]のクロス表A2で,合計の計算をさせ,合計欄付きのクロス表 A3 を作成させる.

    A3 #  と記述し,合計欄付きクロス表 A3 を表示確認する.

    ・行と列の「Sum」の文字を日本語の「合計」にするには,

    colnames(A3) [ncol(A3)] <- "合計"

    rownames(A3) [nrow(A3)] <- "合計"
    #  と記述し行columnと列rowの文字を書き換える.

    A3 #  と記述し,クロス表 x3 を表示確認する.


  5. 列番号を使ったクロス表の作成

    5.1. 列番号を使った操作の手順




    5.2. table( データフレーム名 [ c ( 列番号m, 列番号n ) ] )

    ・クロス表を作成するには table関数を使用する.

    B <- table( A [ c( 2, 1 ) ] ) #  と記述し, Rに変数[01]と変数[02]のクロス集計表 B を作成させる.

    B #  と記述し,クロス表 B を表示確認する.


    注意 Rの統計解析では,合計欄のないクロス表を使用する.


    5.3. 合計欄付き クロス表の作成

    B2 <- addmargins (B) #  と記述し, 変数[1]と変数[2]のクロス表yで,合計の計算をさせ,合計欄付きのクロス表 B2 を作成させる.

    B2 #  と記述し,合計欄付きクロス表 B2 を表示確認する.


    5.4. 行と列の「Sum」の文字を日本語の「合計」にするには,

    colnames(B2) [ncol (B2)] <- "合計"

    rownames(B2) [nrow (B2)] <- "合計"
    #  と記述し行columnと列rowの文字を書き換える.

    B2 #  と記述し,合計欄付きクロス表 B2 を表示確認する.

[ 目次に戻る ]