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

「スタック・アンスタック」データフレームの表現形式とデータ変換


  1. 「アンスタック形式」と「スタック形式」のデータフレームの表現形式

    統計に用いる関数が要求するデータフレームの表現形式は,下の表に示す「アンスタック形式」と「スタック形式」がある.

    変数ごとに測定値を列として整理した表形式の「アンスタック形式」と

    データを群(カテゴリ)とその測定値に,二列(二変数)の表形式にまとめた「スタック形式」である.

    「アンスタック形式」の各列の変数名は,「スタック形式」では群のカテゴリーに置き換える.

    データの情報は同じなので2つの形式は stack 関数と unstack 関数で互いにデータ変換できる.


    「アンスタック形式」unstack 「スタック形式」stack 「アンスタック形式」unstack 「スタック形式」stack
    変数1 変数2
    10 9
    9 10
    9 8
    9 10
    7 8
    8 7
    6 7
    7 5
    5 7
    変数1 変数2
    測定値
    10
    9
    9
    9
    7
    8
    6
    7
    5
    9
    10
    8
    10
    8
    7
    7
    5
    7
    変数1 変数2
    実験群 対照群
    10 9
    9 10
    9 8
    9 10
    7 8
    8 7
    6 7
    7 5
    5 7
    変数1 変数2
    測定値
    10 実験群
    9 実験群
    9 実験群
    9 実験群
    7 実験群
    8 実験群
    6 実験群
    7 実験群
    5 実験群
    9 対照群
    10 対照群
    8 対照群
    10 対照群
    8 対照群
    7 対照群
    7 対照群
    5 対照群
    7 対照群





  2. 「アンスタック形式」<−>「スタック形式」のデータ変換


    注意: 変数の数は幾つでもよいが,因子型(Factor型)の変数は変換されずに,削除される.


        表1 アンスタック形式

    10 9
    9 10
    9 8
    9 10
    7 8
    8 7
    6 7
    7 5
    5 7


    (1) 「アンスタック形式」のデータフレームの読み込み

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

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

    x <- read.table ("clipboard", header=TRUE ) #  header=TRUE は第1行が列の変数名

    と記述し, 次に,「表1 アンスタック形式」の [女]と[男]と測定値の緑の部分をマウスで選択し,これをコピーする.

    そして,エンターキーを押す.

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


    (2) 読み込んだ「アンスタック形式」のデータフレームの確認

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

    
    > x <- read.table ("clipboard", header=TRUE )
    > x
       女  男
    1  10    9
    2   9   10
    3   9    8
    4   9   10
    5   7    8
    6   8    7
    7   6    7
    8   7    5
    9   5    7
    


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

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

    
    > str (x)
    'data.frame': 9 obs. of  2 variables:
     $ 女:  int 10 9 9 9 7 8 6 7 5
     $ 男:  int  9 10 8 10 8 7 7 5 7
    



    (4) 「アンスタック形式」の読み込んだデータフレームを「スタック形式」に変換する

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

    y <- stack( x ) #  と記述しデータ形式の「アンスタック形式」−>「スタック形式」変換を行う.

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

    注意: 変数の数は幾つでもよいが,因子型(Factor型)の変数は変換されずに,削除される.


    
    > y <- stack( x )
    > y
        values   ind
    1   10     女
    2    9     女
    3    9     女
    4    9     女
    5    7     女
    6    8     女
    7    6     女
    8    7     女
    9    5     女
    10   9     男
    11  10      男
    12   8     男
    13  10      男
    14   8     男
    15   7     男
    16   7     男
    17   5     男
    18   7     男
    


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

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

    
    > str (y)
    'data.frame':   18 obs. of  2 variables:
     $ values   :  int  10  9  9  9  7  8  6  7  5  9 ...
     $ ind    :  Factor w/ 2 levels "女","男": 1 1 1 1 1 1 1 1 1 2 ...
    


    ・変数名が自動的に「values」と「ind」になる.


    (6) 「スタック形式」に変換したデータフレームを再度「アンスタック形式」に変換する

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

    z <- unstack ( y ) #  と記述しデータ形式の「スタック形式」−>「アンスタック形式」変換を行う.

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

    #  注意: 変数の数は幾つでもよいが,因子型(Factor型)の変数は変換されずに,削除される.


    
    > z <- unstack ( y )
    > z
       女   男
    1  10     9
    2   9    10
    3   9     8
    4   9    10
    5   7     8
    6   8     7
    7   6     7
    8   7     5
    9   5     7
    


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

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

    > str (z) 'data.frame': 9 obs. of 2 variables: $ 女: int 10  9 9  9 7 8 6 7 5 $ 男: int  9 10 8 10 8 7 7 5 7

[ 目次に戻る ]