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

条件式を用い新しい変数を作成・保存する手順 --その2


  1. 表シートのデータを読み込み確認

    表シートは,

    ・表は空欄がないように作成する.データの内容に「NA」は使用しない.RではNot Availableの略がNA.「欠損値」の意味である.

    ・第1行は,必ず,「列の変数名」の欄にする.

    ・「変数名」の頭には数字を含まない.変数名に「 -, (, /, : 」の記号は含まない.日本語は可能.

    ・「変 数名」にはスペースを含まない.含むとRは2個の変数名が記述されているとみなし,エラーとなる.

    表1  架空の原表のデータフレーム「スタック形式」 ( 69個の観測値 )

    知識A成績	知識B成績
    A	A
    B	A
    C	A
    A	A
    A	B
    C	A
    B	A
    C	A
    A	A
    C	A
    A	D
    C	A
    A	A
    A	B
    C	B
    C	A
    B	A
    C	A
    C	C
    C	B
    A	A
    C	B
    B	A
    C	A
    A	D
    C	A
    C	A
    B	B
    C	A
    B	C
    C	A
    B	D
    C	A
    C	A
    A	A
    C	B
    A	A
    C	A
    A	A
    C	B
    C	A
    C	A
    A	A
    A	B
    A	D
    C	D
    C	A
    A	C
    C	C
    C	A
    A	B
    C	C
    A	A
    C	D
    C	A
    C	B
    A	A
    C	B
    C	D
    C	A
    A	A
    B	A
    B	C
    C	D
    A	C
    C	A
    A	D
    A	C
    C	D
    
    表a  知識A X 知識Bを組み合わせた変数を作成
    
                      知識Bの成績
     知識Aの成績      A   B   C   D
                 A   AA  AB  AC  AD
                 B   BA  BB  BC  BD
                 C   CA  CB  CC  CD
    


    (1) Rの「コンソール」画面に

    x <- read.table("clipboard", header=TRUE # をコピーしペーストする.

    次に,表1シートの緑の部分をマウスで選択しコピーし,クリップボードに保存する.そして「コンソール」画面に 残りのカッコ

    ) を,キーボードで打ちこみ,エンターキーを押し,Rを実行する.これでデータは読み込まれた.


    (2) データフレームの確認.

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

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

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

    t <- table( x[ c(1)] ) ; t    と記述し,カテゴリーの集計を,表示し確認する.

    > x <- read.table("clipboard", header=TRUE )
    
    > x
       知識A成績 知識B成績
    1          A         A
    2          B         A
    3          C         A
    4          A         A
    5          A         B
    6          C         A
    7          B         A
      ・・・・・・・・
    63         B         C
    64         C         D
    65         A         C
    66         C         A
    67         A         D
    68         A         C
    69         C         D
    
    
    > str(x)
    'data.frame':   69 obs. of  2 variables:
     $ 知識A成績: Factor w/ 3 levels "A","B","C": 1 2 3 1 1 3 2 3 1 3 ...
     $ 知識B成績: Factor w/ 4 levels "A","B","C","D": 1 1 1 1 2 1 1 1 1 1 ...
    
    
    > summary (x)
     知識A成績 知識B成績
     A:23      A:39     
     B: 9      B:12     
     C:37      C: 8     
               D:10  
    
    > t <- table( x[ c(1, 2)] ) ; t
             知識B成績
    知識A成績  A  B  C  D
            A 12  4  3  4
            B  5  1  2  1
            C 22  7  3  5
    

  2. 既存の変数を加工して新たな変数を作成しもとのデータフレームに追加する

    表2  架空のデータフレーム「スタック形式」 ( 69個の観測値 )

       知識A成績 知識B成績 学力指標
    1          A         A       AA
    2          B         A       BA
    3          C         A       CA
    4          A         A       AA
    5          A         B       AB
    6          C         A       CA
    7          B         A       BA
    8          C         A       CA
    9          A         A       AA
    10         C         A       CA
    11         A         D       AD
    12         C         A       CA
    13         A         A       AA
    14         A         B       AB
    15         C         B       CB
    16         C         A       CA
    17         B         A       BA
    18         C         A       CA
    19         C         C       CC
    20         C         B       CB
    21         A         A       AA
    22         C         B       CB
    23         B         A       BA
    24         C         A       CA
    25         A         D       AD
    26         C         A       CA
    27         C         A       CA
    28         B         B       BB
    29         C         A       CA
    30         B         C       BC
    31         C         A       CA
    32         B         D       BD
    33         C         A       CA
    34         C         A       CA
    35         A         A       AA
    36         C         B       CB
    37         A         A       AA
    38         C         A       CA
    39         A         A       AA
    40         C         B       CB
    41         C         A       CA
    42         C         A       CA
    43         A         A       AA
    44         A         B       AB
    45         A         D       AD
    46         C         D       CD
    47         C         A       CA
    48         A         C       AC
    49         C         C       CC
    50         C         A       CA
    51         A         B       AB
    52         C         C       CC
    53         A         A       AA
    54         C         D       CD
    55         C         A       CA
    56         C         B       CB
    57         A         A       AA
    58         C         B       CB
    59         C         D       CD
    60         C         A       CA
    61         A         A       AA
    62         B         A       BA
    63         B         C       BC
    64         C         D       CD
    65         A         C       AC
    66         C         A       CA
    67         A         D       AD
    68         A         C       AC
    69         C         D       CD
    

    目的: 変数No1「知識A成績」と変数No2「知識B成績」の組合せを変数No3「学力指標」のカテゴリに再分類する.

    表b 学力指標のカテゴリ
           = 知識A X 知識B
    
    
                      知識Bの成績
     知識Aの成績     A   B   C   D
                 A   AA  AB  AC  AD
                 B   BA  BB  BC  BD
                 C   CA  CB  CC  CD
    


    # 2つの変数を合成してあたらしい変数を作成する手順

    d1 <- paste( x$知識A成績, x$知識B成績, step="" )
    # 表1の2つの文字列の変数x$知識A成績とx$知識B成績を変数d1として合成する

    d2 <- gsub( " ", "", d1 )
    # d1の文字列の変数から半角の空白をすべて除き変数d2とする

    y <- transform( x, 学力指標=d2 )
    # 合成した変数d2を「学力指標」の名前をつけ列に加え,これを新しいデータフレームyとする

    str(y) # データ構造の確認
    y # データリストの表示


    # 2つの変数を合成してあたらしい変数を作成する手順
    
    > d1 <- paste( x$知識A成績, x$知識B成績, step="" ) 
    
    > d2 <- gsub( " ", "", d1 )
    
    > y <- transform( x, 学力指標=d2 ) 
    
    > y
       知識A成績 知識B成績 学力指標
    1          A         A       AA
    2          B         A       BA
    3          C         A       CA
    4          A         A       AA
    5          A         B       AB
      ・・・・・・・・・・・・
    65         A         C       AC
    66         C         A       CA
    67         A         D       AD
    68         A         C       AC
    69         C         D       CD
    
    > str(y)
    'data.frame':   69 obs. of  3 variables:
     $ 知識A成績: Factor w/ 3 levels "A","B","C": 1 2 3 1 1 3 2 3 1 3 ...
     $ 知識B成績: Factor w/ 4 levels "A","B","C","D": 1 1 1 1 2 1 1 1 1 1 ...
     $ 学力指標 : Factor w/ 12 levels "AA","AB","AC",..: 1 5 9 1 2 9 5 9 1 9 ...
    
    > summary(y)
     知識A成績 知識B成績    学力指標 
     A:23      A:39      CA     :22  
     B: 9      B:12      AA     :12  
     C:37      C: 8      CB     : 7  
               D:10      BA     : 5  
                         CD     : 5  
                         AB     : 4  
                         (Other):14  
    
    > t <- table( y[ c(3)] ) ; t 
    
    AA AB AC AD BA BB BC BD CA CB CC CD 
    12  4  3  4  5  1  2  1 22  7  3  5 
    

    [ 目次に戻る ]