Sas: 2 つの変数に基づいてデータセットを結合する方法
次の基本構文を使用して、2 つの変数の一致に基づいて SAS の 2 つのデータセットをマージできます。
data final_data;
merge data1(in=a) data2(in=b);
by ID Store;
if a and b;
run ;
この特定の例では、 IDとStoreという変数に基づいてdata1とdata2というデータ セットをマージし、両方のデータ セットに値が存在する行のみを返します。
次の例は、この構文を実際に使用する方法を示しています。
例: 2 つの変数に基づいて SAS でデータセットを結合する
SAS に、会社の営業担当者に関する情報を含む次のデータセットがあるとします。
/*create first dataset*/
data data1;
inputStoreID $;
datalines ;
1A
1B
1 C
2A
2C
3A
3 B
;
run ;
/*view first dataset*/
title "data1";
proc print data = data1;
そして、各従業員がさまざまな店舗で行った売上に関する情報を含む別のデータセットがあるとします。
/*create second dataset*/
data data2;
input Store ID $Sales;
datalines ;
1 to 22
1 B 25
2 to 40
2 B 24
2 C 29
3 to 12
3 B 15
;
run ;
/*view second dataset*/
title "data2";
proc print data = data2;
次のマージステートメントを使用して、 ID列とStore列の一致する値に基づいて 2 つのデータセットをマージし、両方の列に値が存在する行のみを返すことができます。
/*perform merge*/
data final_data;
merge data1(in=a) data2(in=b);
by ID Store;
if a and b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
結果のデータセットは、 IDとStore列の値が一致する行を返します。
注: SAS mergeステートメントの完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、SAS で他の一般的なタスクを実行する方法について説明します。
SAS: 1 対多のマージを実行する方法
SAS: merge ステートメントで (in=a) を使用する方法
SAS: A が B ではない場合にマージする方法