logo

R merge、dplyr、または data.table を使用して R でデータをマージする方法

R は、主に統計計算とグラフィックスに使用されるプログラミング言語およびソフトウェア環境です。データ操作、データ分析、データ視覚化、統計モデリングのための幅広いツールを提供します。

データの結合は、データ分析とデータ操作におけるタスクです。 R では、データ フレームをマージするさまざまな方法があります。 'マージ()' を使用して、基底 R から関数を取得します。 「dplyr」 パッケージと、 'データ表' パッケージ。このチュートリアルでは、R を使用してデータをマージするために上記の 3 つの方法を使用します。



1. ベース R から「merge()」を使用する:

ベース R の merge() 関数は、共通の列に基づいて 2 つ以上のデータ フレームを結合するのに役立ちます。内部結合、左結合、右結合、完全結合など、さまざまな種類の結合を実行します。

構文:

merged_df <- merge(x,y,by = 'common_column',..)>
  • 'バツ' そして 'そして' は、マージするデータ フレームです。
  • 'による' マージが実行される共通列を指定します。
  • 次のような追加の引数 「すべて.x」 みんな そして '全て' 実行される結合のタイプを制御します。

例:



2 つのデータ フレーム「df1」と「df2」を考えます。

R






df1 <->data.frame>(ID =>c>(1, 2, 3, 4),> >Name =>c>(>'A'>,>'B'>,>'C'>,>'D'>),> >Age =>c>(25, 30, 35, 40))> df2 <->data.frame>(ID =>c>(2, 3, 4, 5),> >Occupation =>c>(>'Engineer'>,>'Teacher'>,>'Doctor'>,>'Lawyer'>),> >Salary =>c>(5000, 4000, 6000, 7000))>

>

>

「merge()」関数を使用してさまざまなタイプの結合を実行する例を見てみましょう。

1. 内部結合 (デフォルトの動作):

R




inner_join <->merge>(df1, df2, by =>'ID'>)> print>(inner_join)>

>

>

出力:

 ID Name Age Occupation Salary 1 2 B 30 Engineer 5000 2 3 C 35 Teacher 4000 3 4 D 40 Doctor 6000>

結果の「inner_join」データフレームには、共通の行のみが含まれます。 「ID」 に存在します 「df1」と「df2」の両方。

2. 左結合( 「all.x=TRUE」 ):

R




left_join <->merge>(df1, df2, by =>'ID'>, all.x =>TRUE>)> print>(left_join)>

>

それはです
>

出力:

 ID Name Age Occupation Salary 1 1 A 25 NA 2 2 B 30 Engineer 5000 3 3 C 35 Teacher 4000 4 4 D 40 Doctor 6000>

結果の「left_join」データ フレームには、次のすべての行が含まれます。 「df1」 および「df2」の一致する行。 「df2」の一致しない行には「NA」値が設定されます

3. 右結合 ( 「all.y=TRUE」 ):

R




right_join <->merge>(df1, df2, by =>'ID'>, all.y =>TRUE>)> print>(right_join)>

>

>

出力:

 ID Name Age Occupation Salary 1 2 B 30 Engineer 5000 2 3 C 35 Teacher 4000 3 4 D 40 Doctor 6000 4 5 NA Lawyer 7000>

結果の「right_join」データ フレームには、次のすべての行が含まれます。 「df2」と「df1」の一致する行。 「df1」の一致しない行には「NA」値が設定されます。

4. 完全外部結合( 「すべて=TRUE」 )

R


文字列配列c



full_join <->merge>(df1, df2, by =>'ID'>, all =>TRUE>)> print>(full_join)>

>

>

出力:

ID Name Age Occupation Salary 1 1 A 25 NA 2 2 B 30 Engineer 5000 3 3 C 35 Teacher 4000 4 4 D 40 Doctor 6000 5 5 NA Lawyer 7000>

結果の「full_join」データ フレームには次のものが含まれます。 「df1」と「df2」の両方のすべての行。 一致しない値には「NA」値が設定されます。

2.「dplyr」パッケージを使用します。

「dplyr」パッケージは、データ フレームの結合などのデータ操作のための一連の関数を提供します。

「dplyr」でマージするための主な関数は次のとおりです。 '参加する()'、 さまざまなタイプの結合をサポートします。

構文:

merged_df<- join(x,y,by='common_column',type='type_of_join')>
  • 'バツ' そして 'そして' マージされるデータ フレームです。
  • 'による' マージを実行する共通列を指定します
  • 「結合の種類」 結合のタイプを指定するには、「inner」、「left」、「right」、「full」を指定できます。

例:
をインストールします dplyr() 2 つのデータ フレームをパッケージ化して作成します。 「df1」 そして 「df2」。

R




library>(dplyr)> df1 <->data.frame>(ID =>c>(1, 2, 3, 4),> >Name =>c>(>'A'>,>'B'>,>'C'>,>'D'>),> >Age =>c>(20, 30, 40, 50))> df2 <->data.frame>(ID =>c>(2, 3, 4, 5),> >Occupation =>c>(>'Engineer'>,>'Teacher'>,>'Doctor'>,>'Lawyer'>),> >Salary =>c>(2000, 4000, 6000, 7000))>

>

>

「dplyr」関数を使用してさまざまなタイプの結合を実行する例を見てみましょう。

1. 内部結合:

npどこ

R




inner_join <->inner_join>(df1, df2, by =>'ID'>)> print>(inner_join)>

>

>

出力:

 ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000>

結果の「inner_join」データ フレームには、 「df1」と「df2」の両方に「ID」が存在する共通の行。

2. 左結合:

R




left_join <->left_join>(df1, df2, by =>'ID'>)> print>(left_join)>

>

>

出力:

ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000>

結果の「left_join」データ フレームには次のものが含まれます。 「df1」からのすべての行 そしてその 「df2」の一致する行 。 「df2」の一致しない行には「NA」値が設定されます。

3. 右結合:

R




right_join <->right_join>(df1, df2, by =>'ID'>)> print>(right_join)>

>

>

出力:

ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000 4 5 NA Lawyer 7000>

結果の「right_join」データフレームには次のものが含まれます。 「df2」のすべての行 そしてその 「df1」の一致する行。 「df1」の一致しない行には「NA」値が設定されます。

4. 完全外部結合:

R




full_join <->full_join>(df1, df2, by =>'ID'>)> print>(full_join)>

>

>

出力:

 ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000 5 5 NA Lawyer 7000>

結果の「full_join」データ フレームには次のものが含まれます。 「df1」と「df2」の両方のすべての行 。一致しない行には「NA」値が含まれます。

3. 「data.table」パッケージの使用:

「data.table」パッケージは、データ操作に対する効率的かつ迅速なアプローチを提供します。 「merge()」関数を提供します。基本 R のものと似ていますが、速度が最適化されています。

構文:

xor c++
merged_dt <- merge(x, y, by = 'common_column', ...)>
  • 'バツ' そして 'そして' マージされるデータ フレームです。
  • 'による' マージが実行される共通列を指定します。
  • 次のような追加の引数 「すべて.x」、「すべて.y」 そして '全て' 結合のタイプを制御します。

例:

data.table ライブラリをインストールし、2 つのデータ テーブル「dt1」と「dt2」を作成します。

R




library>(data.table)> dt1 <->data.table>(ID =>c>(1, 2, 3, 4),> >Name =>c>(>'A'>,>'B'>,>'C'>,>'D'>),> >Age =>c>(25, 30, 35, 40))> dt2 <->data.table>(ID =>c>(2, 3, 4, 5),> >Occupation =>c>(>'Engineer'>,>'Teacher'>,>'Doctor'>,>'Lawyer'>),> >Salary =>c>(5000, 4000, 6000, 7000))>

>

>

「data.table」パッケージの「merge()」関数を使用してさまざまなタイプのマージを実行する例を見てみましょう。

1. 内部結合 (デフォルトの動作):

R




inner_join <->merge>(df1, df2, by =>'ID'>)> print>(inner_join)>

>

>

Arduinoの機能

出力:

 ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000>

結果の「inner_join」データ フレームには、 「df1」と「df2」の両方に「ID」が存在する共通の行。

2. 左結合(「all.x = TRUE」):

R




left_join <->merge>(df1, df2, by =>'ID'>, all.x =>TRUE>)> print>(left_join)>

>

>

出力:

 ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000>

結果の「left_join」データ フレームには次のものが含まれます。 全て 一致しない 「df1」より そしてその 「df2」の一致する行。 「df2」の一致しない行には「NA」値が設定されます。

3. 右結合(「all.y = TRUE」):

R




right_join <->merge>(df1, df2, by =>'ID'>, all.y =>TRUE>)> print>(right_join)>

>

>

出力:

 ID Name Age Occupation Salary 1 2 B 30 Engineer 2000 2 3 C 40 Teacher 4000 3 4 D 50 Doctor 6000 4 5 NA Lawyer 7000>

結果の「right_join」データ フレームには次のものが含まれます。 全て 一致しない 「df2」の行と「df1」の一致する行。 「df1」の一致しない行には「NA」値が含まれます。

3. 完全外部結合(「all = TRUE」):

R




full_join <->merge>(df1, df2, by =>'ID'>, all =>TRUE>)> print>(full_join)>

>

>

出力:

 ID Name Age Occupation Salary 1 1 A 20 NA 2 2 B 30 Engineer 2000 3 3 C 40 Teacher 4000 4 4 D 50 Doctor 6000 5 5 NA Lawyer 7000>

結果の「full_join」データ フレームには次のものが含まれます。 全て 一致しない 「df1」と「df2」の両方の行。 一致しない行には「NA」値が含まれます。

「dplyr」と「data.table」を使用する利点の 1 つは、ベース R と比較して、データ操作のためのより簡潔で読みやすい構文を提供することです。

まとめ:

  • 「merge()」は、データ フレームをマージするための汎用関数を提供します。
  • 「dplyr」は、読みやすさと使いやすさを重視したマージに重点を置いています。
  • 'データ。 table は、最適化されたパフォーマンスで大規模なデータセットを処理するための高速かつ効率的な方法を提供します。
  • タスクの複雑さと実行要件に基づいてアプローチを選択する必要があります。