列名を無視して強制的にマージ(行結合)する方法

列数は同じで列名が異なる複数のデータフレームがあったとします。

データフレーム: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つのデータフレームを強制的にマージ(行結合)することができます。