列数は同じで列名が異なる複数のデータフレームがあったとします。
データフレーム:A
名前 | 月 | 給料 |
---|---|---|
佐藤 | 1月 | 500,000 |
データフレーム:B
従業員名 | 日付 | 賃金 |
---|---|---|
田中 | 1月 | 450,000 |
これらのデータフレームを一つにまとめるために、マージ(行結合)したいです。
名前 | 月 | 給料 |
---|---|---|
佐藤 | 1月 | 500,000 |
田中 | 1月 | 450,000 |
UIメニューから使用できる「マージ」機能では、これらのデータフレームで同じ列名になっている必要があります。それぞれのデータフレームの列名が異なる場合、エラーが発生します。
これを回避する1つの方法は、最初に列名を変更してから、マージを実行することです。
しかし、列名変更の必要がある列数が多い場合は大変な作業になります。そこで、カスタムRスクリプトを書くことによって「強制的」にマージを行う方法があります。
スクリプトのプラスボタンから、新規のRスクリプトを作成します。
下記のRスクリプトを貼り付けて、保存ボタンをクリックします。
force_bind = function(df1, df2) {
colnames(df2) = colnames(df1)
bind_rows(df1, df2)
}
これはforce_bind
という関数を定義し、「df2」のデータフレームの列名を「df1」データフレームの列名で置き換え、データフレームをマージするbind_rows
関数を実行するスクリプトになります。
マージを実行したいデータフレームに戻り、「ステップ」メニューから「カスタムRコマンド」を選択します。
そして、以下のように入力します。
force_bind(Employee_Data_2)
'Employee_Data_2'はマージしたいデータフレーム名になります。
実行することで、列名を無視して2つのデータフレームを強制的にマージ(行結合)することができます。