Sas: a が b ではない場合にマージする方法
次の基本構文を使用して、SAS の 2 つのデータセットをマージし、最初のデータセットに値が存在し、2 番目のデータセットには存在しない行のみを返すことができます。
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and not b;
run ;
この特定の例では、 data1とdata2というデータ セットをマージし、 data1に値が存在し、 data2に値が存在しない行のみを返します。
次の例は、この構文を実際に使用する方法を示しています。
例: If A Not B を使用して SAS 内の 2 つのデータセットを結合する
SAS に、会社の営業担当者に関する情報を含む次の 2 つのデータセットがあるとします。
/*create first dataset*/
data data1;
inputIDGender $;
datalines ;
1 Male
2 Male
3 Female
4 Male
5 Female
;
run ;
title "data1";
proc print data = data1;
/*create second dataset*/
data data2;
input IDSales;
datalines ;
1 22
2 15
4 29
6 31
7 20
8 13
;
run ;
title "data2";
proc print data = data2;
次のマージステートメントを使用して、 ID列の値に基づいて 2 つのデータセットをマージすると、両方のデータセットからすべての行が返されます。
/*perform merge*/
data final_data;
merge data1 data2;
byID ;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
ただし、 INステートメントを使用すると、値が最初のデータ セットに存在し、 2 番目のデータ セットには存在しない行のみを返すことができます。
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and not b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
値が最初のデータ セットに存在し、2 番目のデータ セットには存在しない行のみが返されることに注意してください。
注: SAS mergeステートメントの完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、SAS で他の一般的なタスクを実行する方法について説明します。