R言語

R言語 rbindやcbindを使いやすくしてみた【自作関数】

  1. HOME >
  2. R言語 >

R言語 rbindやcbindを使いやすくしてみた【自作関数】

スポンサーリンク

こんにちは、usagi-sanです。

今回は自作関数の紹介をします。

ベクトルやデータフレームを簡単に縦、横方向に結合できる関数を作ってみました。

R言語でベクトルやデータフレームを結合させる際、データフレームのnamesが異なるときはerrorが出てしまいrbindが使えないなどの問題があります。

rbindやcbindを用いたことがある方は一度は、colnamesを合わせたり行数列数を合わせたりするなどしたことがあると思います。

今回紹介する関数は、namesや行数列数の調整を自動的に行ってくれます。

いちいち、colnamesやデータフレームの形を変更することなく、ベクトルやデータフレームの結合ができます。

関数の紹介

mergeRowAndColnamesWithData

関数mergeRowAndColnamesWithDataは、データフレームの行名と列名をデータフレームの要素に結合させる関数です。

ポイント

例えば、write.tableの引数にrow.names = FALSEやcol.names = FALSEを指定する場合、データフレームの行名と列名が出力に反映されなくなり、不都合が生じる場合があります。この関数を用いることで、rbindやcbindなどのデータフレームを結合させる関数を使うことなく、瞬時に行名と列名をデータフレームの要素に組み込むことができます。

mergeRowAndColnamesWithDataの引数を以下に示します。

関数mergeRowAndColnamesWithDataの引数
xデータフレーム型のオブジェクト

rowBind

関数rowBindは2つの(ベクトル型かデータフレーム型)のオブジェクトを縦方向に結合させる関数です。

ポイント

rbindとの違いは、列名や列数を調整する必要がない点です。2つのデータフレームの列名が一致していない場合や列数が異なる場合、rbindを用いることができません。しかし、この関数を用いることで、列名や列数を調整することなく結合させることができます。

rowBindの引数を以下に示します。

関数rowBindの引数
x結合させたいベクトル型またはデータフレーム型のオブジェクト
yxに結合させるベクトル型またはデータフレーム型のオブジェクト
rowNames行名を含めるか含めないか
colNames列名を含めるか含めないか
sep2つのデータフレームxとyを空白行で区切って結合させるか、させないか。sep = TRUEの場合2つのデータフレームの間に空白行が挿入される。

colBind

関数colBindは2つの(ベクトル型かデータフレーム型)のオブジェクトを横方向に結合させる関数です。

ポイント

cbindとの違いは、行数を調整する必要がない点です。2つのデータフレームの行数が異なる場合、cbindを用いることができません。しかし、この関数を用いることで、行数を調整することなく結合させることができます。

colBindの引数を以下に示します。

関数colBindの引数
x結合させたいベクトル型またはデータフレーム型のオブジェクト
yxに結合させるベクトル型またはデータフレーム型のオブジェクト
rowNames行名を含めるか含めないか
colNames列名を含めるか含めないか
sep2つのデータフレームxとyを空白列で区切って結合させるか、させないか。sep = TRUEの場合2つのデータフレームの間に空白列が挿入される。

関数の使いかた

mergeRowAndColnamesWithData

関数mergeRowAndColnamesWithDataの使用例を紹介します。

データセットmtcarsにこの関数を適用してみます。

実行すると、次のようにデータフレームの1行目にはc("", "mpg", "cyl", "disp", "hp", "drat", "wt", "qsec", "vs", "am", "gear", "carb")、1列目にはc("", "Mazda RX4", "Mazda RX4 Wag", "Datsun 710", "Hornet 4 Drive", "Hornet Sportabout")となっているように、データフレームの1行目と1列目にそれぞれ行名と列名が組み込まれています。

関数rownamesやcolnamesを使うと、行名はc("1", "2", . . . , )、列名はc("", "", . . . , "")になっているのが分かります。

rowBind

関数rowBindの使いかたを紹介していきます。

rowBindは2つのデータフレームまたはベクトルを縦方向に結合させるときに便利です。

次を実行することで、mtcarsirisを縦に結合できます。

また、ベクトルに対しても同様の操作が可能です。

ベクトル同士でも、次のように結合させることができます。

colBind

最後に、関数colBindの使いかたを紹介していきます。

rowBindとは反対に、colBindは2つのデータフレームやベクトルを横方向に結合させることができます。

次のように横方向に連結することが可能です。

rowBindの時と同様に、ベクトルに対してもcolBindを用いることができます。

ダウンロード方法

今回紹介した関数はR言語自作パッケージUsagiSanをインストールすることで使えます。

R言語 自作パッケージ UsagiSan

こんにちは、usagi-sanです。 R言語の自作パッケージを紹介します。 統計解析のアルバイトをしている中、暇な時間を見つけて自分でパッケージを作ってみました。 Rのパッケージには、統計解析用のパッ ...

続きを見る

ここで紹介した関数以外にも、便利な関数が沢山あります。ぜひぜひ、使ってください。

また、以下のダウンロードリンクからこの関数を含むスクリプトファイルをダウンロードすることができます。

まとめ

ベクトルやデータフレームを簡単に結合できる関数を導入してみました。

Rに標準で入っている関数rbindやcbindよりも、柔軟性が高く直感的にデータフレームを操作することができます。

また、row.names = FALSEやcol.names = FALSEとの相性も良く、位置などがずれることなく行名や列名がデータフレームの要素に組み込むことができます。

データフレームの操作に役立ててください。

スポンサーリンク

  • この記事を書いた人
  • 最新記事

usagi-san

統計学とゲームとかをメインに解説していくよ。 数式とかプログラミングコードにミスがあったり質問があったりする場合はコメントで受け付けます。すぐに対応します。

-R言語
-,