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

サンプルの結合(行追加)と変数の結合(列追加)


  1. データフレームを結合する関数

    データフレームを結合する関数には,rbind(行の追加),cbind(列の追加),merge(行と列の結合)がある.


  2. サンプルの行追加  表1+表2 = 表3


    表1 サンプルA〜D

    サンプル 変数あ 変数い 変数う
    サンプルA
    サンプルB
    サンプルC
    サンプルD
    表2 サンプルE〜I

    サンプル 変数あ 変数い 変数う
    サンプルE
    サンプルF
    サンプルG
    サンプルH
    サンプルI
    表3 サンプルA〜I

    サンプル 変数あ 変数い 変数う
    サンプルA
    サンプルB
    サンプルC
    サンプルD
    サンプルE
    サンプルF
    サンプルG
    サンプルH
    サンプルI


    (1) 表1と表2の読み込み

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

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

    と記述し,次に,「表1サンプルA〜D」のカラー部分をマウスで選択し,これをコピーする.

    そして,エンターキーを押す.コピーした[clipboard]データファイルを,Rの内部のデータフレーム,ファイル名 x1 に直接読み込む.

    次に,

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

    と記述し,次に,「表2 サンプルE〜I」のカラー部分をマウスで選択し,これをコピーする.

    そして,エンターキーを押す.コピーした[clipboard]データファイルを,Rの内部のデータフレーム,ファイル名 x2 に直接読み込む.


    (2) 関数 rbindで表1に表2のサンプル行を追加し,「表3 サンプルA〜I」を作成する.

    x31 <- rbind ( x1, x2 ) #  データフレーム間で行を追加する

    x31 #  で作成したデータフレーム x31の内容を確認する.

    str( x31 ) #  でデータフレームx31の内容構造を確認する.観測値が9になっている.


    
    > x1 <- read.table ("clipboard", header=TRUE)
    > x2 <- read.table ("clipboard", header=TRUE )
    > x31 <- rbind ( x1, x2 )
    > x31 
        サンプル 変数あ 変数い 変数う
    1 サンプルA     あ     い     う
    2 サンプルB     あ     い     う
    3 サンプルC     あ     い     う
    4 サンプルD     あ     い     う
    5 サンプルE     あ     い     う
    6 サンプルF     あ     い     う
    7 サンプルG     あ     い     う
    8 サンプルH     あ     い     う
    9 サンプルI     あ     い     う
    
    > str( x31 )
    'data.frame':   9 obs. of  4 variables:
     $ サンプル: Factor w/ 9 levels "サンプルA","サンプルB",..: 1 2 3 4 5 6 7 8 9
     $ 変数あ  : Factor w/ 1 level "あ": 1 1 1 1 1 1 1 1 1
     $ 変数い  : Factor w/ 1 level "い": 1 1 1 1 1 1 1 1 1
     $ 変数う  : Factor w/ 1 level "う": 1 1 1 1 1 1 1 1 
    


    (3) 関数 mergeで表1に表2のサンプル行を追加し,「表3 サンプルA〜I」を作成する.

    x32 <- merge ( x1, x2, all=TRUE ) #  データフレーム間で行を追加する

    x32 #  で作成したデータフレーム x32の内容を確認する.

    str( x32 ) #  でデータフレームx32の内容構造を確認する.観測値が9になっている.


    
    > x32 <- merge ( x1, x2, all=TRUE ) 
    > x32 
        サンプル 変数あ 変数い 変数う
    1 サンプルA     あ     い     う
    2 サンプルB     あ     い     う
    3 サンプルC     あ     い     う
    4 サンプルD     あ     い     う
    5 サンプルE     あ     い     う
    6 サンプルF     あ     い     う
    7 サンプルG     あ     い     う
    8 サンプルH     あ     い     う
    9 サンプルI     あ     い     う
    
    > str( x32 )
    'data.frame':   9 obs. of  4 variables:
     $ サンプル: Factor w/ 9 levels "サンプルA","サンプルB",..: 1 2 3 4 5 6 7 8 9
     $ 変数あ  : Factor w/ 1 level "あ": 1 1 1 1 1 1 1 1 1
     $ 変数い  : Factor w/ 1 level "い": 1 1 1 1 1 1 1 1 1
     $ 変数う  : Factor w/ 1 level "う": 1 1 1 1 1 1 1 1 1
    




  3. 変数の列追加  表4+表5 = 表6


    表4 変数あ〜う

    サンプル 変数あ 変数い 変数う
    サンプルA
    サンプルB
    サンプルC
    サンプルD
    表5 変数え〜き

    サンプル 変数え 変数お 変数か 変数き
    サンプルA
    サンプルB
    サンプルC
    サンプルD
    表6 変数あ〜き

    サンプル 変数あ 変数い 変数う 変数え 変数お 変数か 変数き
    サンプルA
    サンプルB
    サンプルC
    サンプルD


    (1) 表4と表5の読み込み

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

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

    と記述し,次に,「表4 変数あ〜う」のカラー部分をマウスで選択し,これをコピーする.そして,エンターキーを押す.

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

    次に,

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

    と記述し,次に,「表5 変数え〜き」のカラー部分をマウスで選択し,これをコピーする.そして,エンターキーを押す.

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


    (2) 関数 mergeで表4に表5の変数列を追加し,「表6 変数あ〜き」を作成する.

    x61 <- merge ( x4, x5, all=TRUE ) #  データフレーム間で行を追加する

    x61 #  でデータフレーム x61 の内容を確認する.

    str ( x61 ) #  でデータフレームx61の内容構造を確認する.観測値が4で変数が8になっている.


    
    > x4 <- read.table ("clipboard", header=TRUE )
    > x5 <- read.table ("clipboard", header=TRUE)
    > x61 <- merge ( x4, x5, all=TRUE ) 
    > x61
    
        サンプル 変数あ 変数い 変数う 変数え 変数お 変数か 変数き
    1 サンプルA     あ     い     う     え     お     か     き
    2 サンプルB     あ     い     う     え     お     か     き
    3 サンプルC     あ     い     う     え     お     か     き
    4 サンプルD     あ     い     う     え     お     か     き
    
    > str ( x61 )
    'data.frame':   4 obs. of  8 variables:
     $ サンプル: Factor w/ 4 levels "サンプルA","サンプルB",..: 1 2 3 4
     $ 変数あ  : Factor w/ 1 level "あ": 1 1 1 1
     $ 変数い  : Factor w/ 1 level "い": 1 1 1 1
     $ 変数う  : Factor w/ 1 level "う": 1 1 1 1
     $ 変数え  : Factor w/ 1 level "え": 1 1 1 1
     $ 変数お  : Factor w/ 1 level "お": 1 1 1 1
     $ 変数か  : Factor w/ 1 level "か": 1 1 1 1
     $ 変数き  : Factor w/ 1 level "き": 1 1 1 1
    



    (2) 関数 cbindあるいはdata.frameで表4に表5の変数列を追加し,「表6 変数あ〜き」を作成する.

    変数が重複することに注意


    x62 <- cbind ( x4, x5 ) #  データフレーム間で行を追加する

    x62 #  でデータフレーム x62 の内容を確認する.

    str ( x62 ) #  でデータフレームx62の内容構造を確認する.観測値が4で変数が一つ増え9になっている.


    x63 <- data.frame ( x4, x5 ) #  データフレーム間で行を追加する

    x63 #  でデータフレーム x63 の内容を確認する.

    str ( x63 ) #  でデータフレームx63の内容構造を確認する.観測値が4で変数が一つ増え9になっている.



    (3) 解決策 重複した変数を除いてデータフレームは作れる,この方法で「表6 変数あ〜き」を作成する.

    x64 <- x62 [ c (1,2,3,4,6,7,8,9) ] #  必要な変数番号を記述する.

    x64 #  でデータフレーム x64 の内容を確認する.


    
    > x62 <- cbind ( x4, x5, ) 
    > x62
        サンプル 変数あ 変数い 変数う   サンプル 変数え 変数お 変数か 変数き
    1 サンプルA     あ     い     う サンプルA     え     お     か     き
    2 サンプルB     あ     い     う サンプルB     え     お     か     き
    3 サンプルC     あ     い     う サンプルC     え     お     か     き
    4 サンプルD     あ     い     う サンプルD     え     お     か     き
    
    > str ( x62 )
    'data.frame':   4 obs. of  9 variables:
     $ サンプル: Factor w/ 4 levels "サンプルA","サンプルB",..: 1 2 3 4
     $ 変数あ  : Factor w/ 1 level "あ": 1 1 1 1
     $ 変数い  : Factor w/ 1 level "い": 1 1 1 1
     $ 変数う  : Factor w/ 1 level "う": 1 1 1 1
     $ サンプル: Factor w/ 4 levels "サンプルA","サンプルB",..: 1 2 3 4
     $ 変数え  : Factor w/ 1 level "え": 1 1 1 1
     $ 変数お  : Factor w/ 1 level "お": 1 1 1 1
     $ 変数か  : Factor w/ 1 level "か": 1 1 1 1
     $ 変数き  : Factor w/ 1 level "き": 1 1 1 1
    
    
    > x63 <- data.frame ( x4, x5 ) > x63 サンプル 変数あ 変数い 変数う サンプル.1 変数え 変数お 変数か 変数き 1 サンプルA あ い う サンプルA え お か き 2 サンプルB あ い う サンプルB え お か き 3 サンプルC あ い う サンプルC え お か き 4 サンプルD あ い う サンプルD え お か き > str ( x63 ) 'data.frame': 4 obs. of 9 variables: $ サンプル : Factor w/ 4 levels "サンプルA","サンプルB",..: 1 2 3 4 $ 変数あ : Factor w/ 1 level "あ": 1 1 1 1 $ 変数い : Factor w/ 1 level "い": 1 1 1 1 $ 変数う : Factor w/ 1 level "う": 1 1 1 1 $ サンプル.1: Factor w/ 4 levels "サンプルA","サンプルB",..: 1 2 3 4 $ 変数え : Factor w/ 1 level "え": 1 1 1 1 $ 変数お : Factor w/ 1 level "お": 1 1 1 1 $ 変数か : Factor w/ 1 level "か": 1 1 1 1 $ 変数き : Factor w/ 1 level "き": 1 1 1 1
    > x64 <- x62 [ c (1,2,3,4,6,7,8,9) ] # 必要な変数番号を記述 > x64 サンプル 変数あ 変数い 変数う 変数え 変数お 変数か 変数き 1 サンプルA あ い う え お か き 2 サンプルB あ い う え お か き 3 サンプルC あ い う え お か き 4 サンプルD あ い う え お か き



  4. 2つのデータフレームの統合  表7+表8 = 表9


    表7

    サンプル 変数あ 変数い 変数き
    サンプルA
    サンプルB
    サンプルC
    サンプルF
    表8

    サンプル 変数う 変数え 変数お 変数か
    サンプルC
    サンプルD
    サンプルE
    サンプルH
    サンプルI
    表9

    サンプル 変数あ 変数い 変数き 変数う 変数え 変数お 変数か
    サンプルA NA NA NA NA
    サンプルB NA NA NA NA
    サンプルC
    サンプルF NA NA NA NA
    サンプルD NA NA NA
    サンプルE NA NA NA
    サンプルH NA NA NA
    サンプルI NA NA NA


    (1) 表7と表8の読み込み

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

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

    と記述し,次に,「表7」のカラー部分をマウスで選択し,これをコピーする.

    そして,エンターキーを押す.コピーした[clipboard]データファイルを,Rの内部のデータフレーム,ファイル名 x7 に直接読み込む.

    次に,

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

    と記述し,次に,「表8」のカラー部分をマウスで選択し,これをコピーする.

    そして,エンターキーを押す.コピーした[clipboard]データファイルを,Rの内部のデータフレーム,ファイル名 x8 に直接読み込む.


    (2) 関数 mergeで表7と表8のサンプル行と変数列を統合し,「表9」を作成する.

    x91 <- merge ( x7, x8, all=TRUE ) #  データフレーム間で行を追加する

    x91 #  でデータフレーム x91 の内容を確認する.

    str ( x91 ) #  でデータフレームx91の内容構造を確認する.観測値が8で変数が8になっている.欠損値にはNA (Not Available)が入る.


    
    > x7 <- read.table ("clipboard", header=TRUE )
    > x8 <- read.table ("clipboard", header=TRUE )
    > x91 <- merge ( x7, x8, all=TRUE )
    > x91
    
        サンプル 変数あ 変数い 変数き 変数う 変数え 変数お 変数か
    1 サンプルA     あ     い     き   <NA><NA><NA><NA>
    2 サンプルB     あ     い     き   <NA><NA><NA><NA>
    3 サンプルC     あ     い     き     う     え     お     か
    4 サンプルF     あ     い     き   <NA><NA><NA><NA>
    5 サンプルD   <NA><NA><NA>     う     え     お     か
    6 サンプルE   <NA><NA><NA>     う     え     お     か
    7 サンプルH   <NA><NA><NA>     う     え     お     か
    8 サンプルI   <NA><NA><NA>     う     え     お     か
    
    > str ( x91 ) 
    'data.frame':   8 obs. of  8 variables:
     $ サンプル: Factor w/ 8 levels "サンプルA","サンプルB",..: 1 2 3 4 5 6 7 8
     $ 変数あ  : Factor w/ 1 level "あ": 1 1 1 1 NA NA NA NA
     $ 変数い  : Factor w/ 1 level "い": 1 1 1 1 NA NA NA NA
     $ 変数き  : Factor w/ 1 level "き": 1 1 1 1 NA NA NA NA
     $ 変数う  : Factor w/ 1 level "う": NA NA 1 NA 1 1 1 1
     $ 変数え  : Factor w/ 1 level "え": NA NA 1 NA 1 1 1 1
     $ 変数お  : Factor w/ 1 level "お": NA NA 1 NA 1 1 1 1
     $ 変数か  : Factor w/ 1 level "か": NA NA 1 NA 1 1 1 1
    

[ 目次に戻る ]