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

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


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

    表シートは,

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

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

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

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

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

    学力指標1
    AA
    BA
    CA
    AA
    AB
    CA
    BA
    CD
    CA
    AC
    CC
    CA
    AA
    CA
    AD
    CA
    AA
    AB
    AA
    CA
    BA
    CA
    AA
    AA
    CB
    AA
    CA
    AA
    AD
    AA
    CA
    AA
    CA
    CA
    AA
    AB
    AA
    CA
    CA
    CA
    AA
    CA
    AA
    CA
    CA
    AB
    AA
    CD
    AA
    AB
    CA
    CB
    AA
    CB
    CD
    CA
    
    表a  学力指標1のカテゴリ
            = 知識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の「コンソール」画面に,

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

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

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

    > x <- read.table("clipboard", header=TRUE )
    
    
    > str(x)
    'data.frame':   56 obs. of  1 variable:
     $ 学力指標1: Factor w/ 9 levels "AA","AB","AC",..: 1 5 6 1 2 6 5 9 6 3 ...
    
    
    > summary (x)
        学力指標1 
     CA     :20  
     AA     :18  
     AB     : 5  
     BA     : 3  
     CB     : 3  
     CD     : 3  
     (Other): 4  
    
    
    > t <- table( x[ c(1)] ) ; t 
    
    AA AB AC AD BA CA CB CC CD 
    18  5  1  2  3 20  3  1  3 
    
    
    
    


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

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



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

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

       学力指標1 学力指標2 学力指標3
    1         AA      能A1      能B1
    2         BA      能A1      能B1
    3         CA      能A2      能B2
    4         AA      能A1      能B1
    5         AB      能A1      能B1
    6         CA      能A2      能B2
    7         BA      能A1      能B1
    8         CD      能A4      能B2
    9         CA      能A2      能B2
    10        AC      能A1      能B2
    11        CC      能A2      能B2
    12        CA      能A2      能B2
    13        AA      能A1      能B1
    14        CA      能A2      能B2
    15        AD      能A3      能B2
    16        CA      能A2      能B2
    17        AA      能A1      能B1
    18        AB      能A1      能B1
    19        AA      能A1      能B1
    20        CA      能A2      能B2
    21        BA      能A1      能B1
    22        CA      能A2      能B2
    23        AA      能A1      能B1
    24        AA      能A1      能B1
    25        CB      能A2      能B2
    26        AA      能A1      能B1
    27        CA      能A2      能B2
    28        AA      能A1      能B1
    29        AD      能A3      能B2
    30        AA      能A1      能B1
    31        CA      能A2      能B2
    32        AA      能A1      能B1
    33        CA      能A2      能B2
    34        CA      能A2      能B2
    35        AA      能A1      能B1
    36        AB      能A1      能B1
    37        AA      能A1      能B1
    38        CA      能A2      能B2
    39        CA      能A2      能B2
    40        CA      能A2      能B2
    41        AA      能A1      能B1
    42        CA      能A2      能B2
    43        AA      能A1      能B1
    44        CA      能A2      能B2
    45        CA      能A2      能B2
    46        AB      能A1      能B1
    47        AA      能A1      能B1
    48        CD      能A4      能B2
    49        AA      能A1      能B1
    50        AB      能A1      能B1
    51        CA      能A2      能B2
    52        CB      能A2      能B2
    53        AA      能A1      能B1
    54        CB      能A2      能B2
    55        CD      能A4      能B2
    56        CA      能A2      能B2
    

    目的: 変数No1「学力指標1: 表aの学力指標のカテゴリ」を変数No2「学力指標2: 表bの学力指標のカテゴリ」に再分類しデータに追加する.

    さらに変数No2「学力指標3: 表cの学力指標のカテゴリ」に再分類しデータに追加する.



    表a 学力指標1のカテゴリ
           = 知識A X 知識B
    
    
                      知識Bのレベル
    知識Aのレベル     A   B   C   D
                 A   AA  AB  AC  AD
                 B   BA  BB  BC  BD
                 C   CA  CB  CC  CD
    
    表b 学力指標2のカテゴリ
    変数No2[能力A]分類を作成追加
    
    
                      知識Bのレベル
    知識Aのレベル     A    B    C    D
                A   能A1  能A1  能A1  能A3
                B   能A1  能A1  能A1  能A3
                C   能A2  能A2  能A2  能A4
    
    表c 学力指標3のカテゴリ
    変数No3[能力B]分類を作成追加
    
    
                      知識Bのレベル
    知識Aのレベル     A    B    C    D
               A   能B1  能B1  能B2  能B2
               B   能B1  能B1  能B2  能B2
               C   能B2  能B2  能B2  能B2
    


    # 変数No2[学力指標2]分類を作成追加の手順
    y <- transform ( x, 学力指標2 = "A0" )
    # データフレームに変数No2「学力指標2」を追加し,新しいデータフレームで保存する.

    y$学力指標2 <- factor (y$学力指標1,
    levels=c( "AA", "AB", "AC", "AD", "BA", "BB", "BC", "BD", "CA", "CB", "CC", "CD" ),
    labels=c( "能A1", "能A1", "能A1", "能A3", "能A1", "能A1", "能A1", "能A3", "能A2", "能A2", "能A2", "能A4") )

    # 変数No1「学力指標1」のカテゴリーのレベルに対応した新しい分類のラベル名をつけ,これを,変数No2「学力指標2」のレベルとする.

    y$学力指標2 <- factor( y$学力指標2, levels=c( "能A1","能A2", "能A3", "能A4"), ordered=TRUE )
    # 変数No2「学力指標2」のレベル( "能A1","能A2", "能A3", "能A4")の順番をRに正しく理解させるためにordered=TRUEのおまじない.


    # 変数No3[学力指標3]分類を作成追加の手順
    y <- transform ( y, 学力指標3 = "B0" )
    # データフレームに変数No3「学力指標3」を追加.

    y$学力指標3 <- factor (y$学力指標1,
    levels=c( "AA", "AB", "AC", "AD", "BA", "BB", "BC", "BD", "CA", "CB", "CC", "CD" ),
    labels=c( "能B1", "能B1", "能B2", "能B2", "能B1", "能B1", "能B2", "能B2", "能B2", "能B2", "能B2", "能B2") )

    # 変数No1「学力指標1」のカテゴリーのレベルに対応した新しい分類のラベル名をつけ,これを,変数No3「学力指標3」のレベルとする.

    y$学力指標3 <- factor( y$学力指標3, levels=c( "能B1", "能B2"), ordered=TRUE )
    # 変数No3「学力指標3」のレベル( "能B1", "能B2")の順番をRに正しく理解させるためにordered=TRUEのおまじない.

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


    # 変数No2[学力指標2]分類を作成追加の手順
    
    > y <- transform ( x, 学力指標2 = "A0" )
    
    > y$学力指標2 <- factor (y$学力指標1, 
     levels=c( "AA", "AB", "AC", "AD", "BA", "BB", "BC", "BD", "CA", "CB", "CC", "CD" ), 
     labels=c( "能A1", "能A1", "能A1", "能A3", "能A1", "能A1", "能A1", "能A3", "能A2", "能A2", "能A2", "能A4") ) 
    
    > y$学力指標2 <- factor( y$学力指標2, levels=c( "能A1","能A2", "能A3", "能A4"), ordered=TRUE )
    
    
    # 変数No3[学力指標3]分類を作成追加の手順
    
    > y <- transform ( y, 学力指標3 = "B0" )
    
    > y$学力指標3 <- factor (y$学力指標1, 
     levels=c( "AA", "AB", "AC", "AD", "BA", "BB", "BC", "BD", "CA", "CB", "CC", "CD" ), 
     labels=c( "能B1", "能B1", "能B2", "能B2", "能B1", "能B1", "能B2", "能B2", "能B2", "能B2", "能B2", "能B2") ) 
    
    > y$学力指標3 <- factor( y$学力指標3, levels=c( "能B1", "能B2"), ordered=TRUE )
    
    > str(y)
    'data.frame':   56 obs. of  3 variables:
     $ 学力指標1: Factor w/ 9 levels "AA","AB","AC",..: 1 5 6 1 2 6 5 9 6 3 ...
     $ 学力指標2: Ord.factor w/ 4 levels "能A1"<"能A2"<..: 1 1 2 1 1 2 1 4 2 1 ...
     $ 学力指標3: Ord.factor w/ 2 levels "能B1"<"能B2": 1 1 2 1 1 2 1 2 2 2 ...
    
    > t <- table( y[ c(1)] ) ; t 
    AA AB AC AD BA CA CB CC CD 
    18  5  1  2  3 20  3  1  3 
    
    > t <- table( y[ c(2)] ) ; t 
    能A1 能A2 能A3 能A4 
      27   24    2    3
    
    > t <- table( y[ c(3)] ) ; t 
    能B1 能B2 
      26   30 
    

    [ 目次に戻る ]