
[Rによるデータ分析入門]merge関数の使い方
本コラムはRによるデータ分析入門のWEBサポートとして作成されています。
本コラムはRで2つのデータフレームを接続するmerge関数の使い方、注意事項について説明します。データの接続は、小さなデータであればEXCELで作業すれば済みますが、大規模データの場合、EXCELではものすごく手間がかかりますし、手作業ですのでどこかでミスが起こりかねません。そのようなときにはRのmerge関数が便利です。
基本的な使い方と注意事項
たとえば以下のような2つのデータフレームobj1とobj2があったとします。2つのデータにはidという番号がついているので、これをキー変数にして、この2つを接続してみましょう。


merge関数は以下のように使います。
merge(データフレーム1, データフレーム2, by=("キー変数"))
データフレーム1とデータフレーム2は接続したいデータフレームの名前です。
上記の例ではobj1とobj2です。キー変数はidになります。
なお上記の例では、2つのデータフレームで同じidが存在するのは、id=4とid=5のみになります。早速接続してみましょう。

merge関数で接続したデータフレームをobj3としています。同じidがobj1にもobj2にもあるデータのみから構成されるデータフレームが出来ました。
しかし、id=1,2,3,6,7のデータも残しておきたいという場合もありえます。そんなときは、all=TRUEオプションを付けます。これを付けると接続不可のデータも残しておいてくれます。早速やってみましょう。

たしかにid=1~7までのデータができました。そしてobj1にしか含まれていないid=6~7にはobj2のdata2は欠損値(NA)になっていることがわかります。同様にobj2にしか含まれていないid=1~3にはobj1のdata1は欠損値(NA)になっています。
このようにmerge関数でデータを接続する際には、接続可能なデータのみに限定するか、接続不可のものを残しておくかを考えておく必要があります。
本コラムで使用したRのスクリプトはこちらから取得できます。
本コラムは「Rによるデータ分析入門」のWEBサポートページとして作成されました。WEBサポートの一覧は以下を参照してください。
WEBサポートの一覧は以下を参照してください。