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 >
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 >
文献:
- 作者: 金明哲
- 出版社/メーカー: 森北出版
- 発売日: 2007/10/01
- メディア: 単行本(ソフトカバー)
- 購入: 36人 クリック: 694回
- この商品を含むブログ (64件) を見る
- 作者: 青木繁伸
- 出版社/メーカー: オーム社
- 発売日: 2009/04/01
- メディア: 単行本
- 購入: 10人 クリック: 123回
- この商品を含むブログ (34件) を見る