R言語プログラミング: データ結合

統計解析・データマイニング言語である R言語のデータ結合をソースコードを用い紹介する。記載しているソースは、R Console上や EclipseでR-Scriptとして、そのまま実行可能である。

R Consoleでの実行例  (Rのインストール・環境設定はこちら)

EclipseでのR-Scriptとしての実行例  (RをEclipseで実行するための方法はこちら)

R のデータの結合

RにはVector, Data.Frame, Matrix を 結合する関数がよいされている。
行(row)方向に結合する関数として rbind、列(column)方向に結合する関数として cbindがある。

ソースコード

ma<-matrix(1:6,2,3) # 1-6の2×3行列
ma # maの表示
mb<-matrix(7:12,2,3) # 7-12の 2×3行列
mb # mbの表示

mc<-cbind(ma,mb) # 列の結合
mc # mcの表示
mr<-rbind(ma,mb) # 行の結合
mr # mrの表示

実行結果

>ma<-matrix(1:6,2,3) # 1-6の2×3行列
> ma # maの表示
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> mb<-matrix(7:12,2,3) # 7-12の 2×3行列
> mb # mbの表示
     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12
> 
> mc<-cbind(ma,mb) # 列の結合
> mc # mcの表示
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    3    5    7    9   11
[2,]    2    4    6    8   10   12
> mr<-rbind(ma,mb) # 行の結合
> mr # mrの表示
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
[3,]    7    9   11
[4,]    8   10   12
> 

ソースコード(data.frameとvectorとの結合)

df<-data.frame(cbind(1:3,4:6)) # 1-3, 4-6 の要素を持つ、3×2のdata.frame
df
v<-c(1:3) # 1-3の vector 
v
dfr <- rbind(df,v) # 行の結合: data.frame と vector
dfr
dfc <- cbind(df,v) # 列の結合: data.frame と vector
dfc

実行結果

>df<-data.frame(cbind(1:3,4:6)) # 1-3, 4-6 の要素を持つ、3×2のdata.frame
> df
  X1 X2
1  1  4
2  2  5
3  3  6
> v<-c(1:3) # 1-3の vector 
> v
[1] 1 2 3
> dfr <- rbind(df,v) # 行の結合: data.frame と vector
> dfr
  X1 X2
1  1  4
2  2  5
3  3  6
4  1  2
> dfc <- cbind(df,v) # 列の結合: data.frame と vector
> dfc
  X1 X2 v
1  1  4 1
2  2  5 2
3  3  6 3
> 


ソースコード (data.frameとmatrixとの結合)

m<-matrix(7:12,3,2) # 9-16の 3×2 Matrix 
m
dfr <- rbind(df,m) # 行の結合: data.frame と Matrix
dfr
dfc <- cbind(df,m) # 列の結合: data.frame と Matrix
dfc

実行結果

df<-data.frame(cbind(1:3,4:6)) # 1-3, 4-6 の要素を持つ、3×2のdata.frame
> df # df の表示
  X1 X2
1  1  4
2  2  5
3  3  6
> m<-matrix(7:12,3,2) # 9-16の 3×2 Matrix 
> m # m の表示
     [,1] [,2]
[1,]    7   10
[2,]    8   11
[3,]    9   12
> 
> dfr <- rbind(df,m) # 行の結合
Error in match.names(clabs, names(xi)) : 
  names do not match previous names
> dfr # dfcの表示
Error: object 'dfr' not found
> dfc <- cbind(df,m) # 列の結合
> dfc # dfcの表示
  X1 X2 1  2
1  1  4 7 10
2  2  5 8 11
3  3  6 9 12
> 		
> m<-matrix(7:12,3,2) # 9-16の 3×2 Matrix 
> m
     [,1] [,2]
[1,]    7   10
[2,]    8   11
[3,]    9   12
> dfr <- rbind(df,m) # 行の結合: data.frame と Matrix
Error in match.names(clabs, names(xi)) : 
  names do not match previous names
> dfr
Error: object 'dfr' not found
> dfc <- cbind(df,m) # 列の結合: data.frame と Matrix
> dfc
  X1 X2 1  2
1  1  4 7 10
2  2  5 8 11
3  3  6 9 12
> 


複数の行列の引数がある場合、それらは同じ行または列のを持たねばならない。もし引数が全て vector なら、結果の数行または列数は最長のベクトルの長さとなる。より短いベクトルの値はこの長さに達するまで繰り返される。完全に繰り返されない場合には警告が出る。

ソースコード

a<-c(1:2) # 1-2のvector 
a # a を表示
b<-c(1:8) # 1-8のvector
b # b を表示

c<-cbind(a,b) #短いベクトル a の値は繰り返し使用される。
c # c を表示

実行結果

a<-c(1:2) # 1-2のvector 
> a # a を表示
[1] 1 2
> b<-c(1:8) # 1-8のvector
> b # b を表示
[1] 1 2 3 4 5 6 7 8
> 
> c<-cbind(a,b) #短いベクトル a の値は繰り返し使用される。
> c # c を表示
     a b
[1,] 1 1
[2,] 2 2
[3,] 1 3
[4,] 2 4
[5,] 1 5
[6,] 2 6
[7,] 1 7
[8,] 2 8
> 

文献:

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによる統計解析

Rによる統計解析

R: The R Project for Statistical Computing