Sas: merge ステートメントで (in=a) を使用する方法
SAS で 2 つのデータセットをマージする場合、 INステートメントを使用して、特定のデータセットに値が存在する行のみを返すことができます。
実際にINステートメントを使用する一般的な方法をいくつか示します。
方法 1: 最初のデータセット (in=a) に値が存在する行を返します。
data final_data;
merge data1 (in=a) data2;
byID ;
if a;
run ;
この特定の例では、 data1とdata2というデータ セットをマージし、 data1に値が存在する行のみを返します。
方法 2: 2 番目のデータセット (in=b) に値が存在する行を返します。
data final_data;
merge data1 data2 (in=b);
byID ;
if b;
run ;
この特定の例では、 data1とdata2というデータ セットをマージし、 data2に値が存在する行のみを返します。
方法 3: 両方のデータセット (in=a) と (in=b) に値が存在する行を返します。
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and b;
run ;
この特定の例では、 data1とdata2というデータ セットをマージし、 data1とdata2の両方に値が存在する行のみを返します。
次の例は、次の 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;
例 1: すべての行を返す
INステートメントを使用せずに次のマージステートメントを使用すると、 ID列の値に基づいて 2 つのデータセットをマージし、両方のデータセットからすべての行を返すことができます。
/*perform merge*/
data final_data;
merge data1 data2;
byID ;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
ID 値が両方のデータセットに存在しないために値が欠落している場合でも、両方のデータセットのすべての行が返されることに注意してください。
例 2: 最初のデータセット (in = a) に値が存在する行を返します。
(in=a)を指定した次のマージステートメントを使用すると、 ID列の値に基づいて 2 つのデータセットをマージし、最初のデータセットに値が存在する行のみを返すことができます。
/*perform merge*/
data final_data;
merge data1 (in = a) data2;
byID ;
if a;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
最初のデータセットに値が存在する行のみが返されることに注意してください。
例 3: 2 番目のデータセット (in=b) に値が存在する行を返します。
(in=b)を指定した次のマージステートメントを使用すると、 ID列の値に基づいて 2 つのデータセットをマージし、2 番目のデータセットに値が存在する行のみを返すことができます。
/*perform merge*/
data final_data;
merge data1 data2(in=b);
byID ;
if b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
2 番目のデータセットに値が存在する行のみが返されることに注意してください。
例 4: 両方のデータセット (in = a) と (in = b) に値が存在する行を返します。
(in=a)と(in=b)を指定した次のマージステートメントを使用すると、 ID列の値に基づいて 2 つのデータ セットをマージし、両方のデータ セットに値が存在する行のみを返すことができます。
/*perform merge*/
data final_data;
merge data1(in=a) data2(in=b);
byID ;
if a and b;
run ;
/*view results*/
title "final_data";
proc print data =final_data;
両方のデータセットに値が存在する行のみが返されることに注意してください。
注: SAS mergeステートメントの完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、SAS で他の一般的なタスクを実行する方法について説明します。