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

質的データから2変数のクロス表(分割表)を作成する


  1. 変数がカテゴリの原表のデータフレームからクロス集計を行いクロス表(分割表)を作成する


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

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

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


    1.2. 変数がカテゴリの「スタック形式」のデータフレーム

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

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

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

    3. 表のグリーンの部分が,「Rのデータフレーム」.行列の表で,行にはサンプルが並び,列にはその変数が並ぶ.

    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  架空の原表のデータフレーム「スタック形式」 ( 9個の観測値 )

    サンプル
    01
    02
    03
    04
    05
    06
    07
    08
    09
    変数01(ver01) 変数02(ver02) 変数03(ver03) 変数04(ver04)



    1.3. 2変数のクロス表のデータ形式

    表2  変数01と変数02の3x3クロス表

      変数01-カテゴリ.あ 変数01-カテゴリ.い 変数01-カテゴリ.う
    1.変数02-カテゴリ.山 3 0 0
    2.変数02-カテゴリ.川 0 3 0
    3.変数02-カテゴリ.里 0 0 3



    表3  変数03と変数04の4x3クロス表

      変数03-カテゴリ.か 変数03-カテゴリ.き 変数03-カテゴリ.く 変数03-カテゴリ.け
    1.変数04-カテゴリ.花 3 0 0 0
    2.変数04-カテゴリ.月 0 0 0 2
    3.変数04-カテゴリ.鳥 0 2 0 0
    4.変数04-カテゴリ.風 0 0 2 0


  2. Rにデータフレームを読み込む

    2.1. 操作の手順




    2.2. データフレームの読み込み

    ここでは,表シートあるいはエクセルの表計算シートからクリップボード経由で読み込む操作を行う.

    「表1 架空のデータフレーム」の緑の部分をマウスで選択し,これをコピーする.

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

    x <- read.table("clipboard", header=TRUE) #  と記述し,

    コピーした[clipboard]データファイルを,Rの内部のデータフレーム,ファイル名 x に直接読み込む.

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


    2.3. 読み込んだデータフレームの確認

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

    ・Rが理解した,日本語の変数名の変化に注意する.Rが読めないコードの日本語文字を使用している場合があるので注意する.

    ・Rが読めない場合は次のようなエラーメッセージが出てくる. まずは,使用した変数名の日本語を書き直すこと.

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



    2.4. データフレームの構造確認

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

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

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


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

    3.1. 「変数01.ver01.」と「変数02.ver02.」の変数名を使った操作の手順




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

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

    x2 <- table(x $ 変数02.ver02., x $ 変数01.ver01.) #  と記述し, Rに変数[1]と変数[2]のクロス表 x2 を作成させる.

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



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

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


    4.1. 操作の手順




    4.2. 合計欄の計算

    x3 <- addmargins(x2) #  と記述し,

    変数[1]と変数[2]のクロス表x2で,合計の計算をさせ,合計欄付きのクロス表 x3 を作成させる.

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


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

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

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



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

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





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

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

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

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


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


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

    y2 <- addmargins (y) #  と記述し,

    変数[1]と変数[2]のクロス表yで,合計の計算をさせ,合計欄付きのクロス表 y2 を作成させる.

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


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

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

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

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

[ 目次に戻る ]