2つのデータセットのマージで両方にキーがあるときだけデータを出力する
[OS] ALL
[リリース] ALL
[キーワード] Base, DATA, MERGE, IN OPTION
[質問]MERGEステートメントを使用して2つのデータセットを結合する際、両方のデータセットにキーがあるときだけデータを出力するようにできますか?
[回答]両方のデータセットにキーが存在するときだけデータを出力するには、MERGEステートメントでIN=オプションを指定します。
「IN=変数名」はブーリアンフラグで、BYグループが替わるたびにリセットされます。
両方のデータセットにデータが存在するデータだけを出力する場合は、BYグループをチェックします。 プログラム例:
DATA file1;
INPUT var name $;
CARDS;
100 john
200 joe
400 bill
600 bob
;
RUN;
PROC SORT data=file1;
BY var;
RUN;
DATA file2;
INFILE cards dsd truncover;
INPUT var address $ 13.;
CARDS;
100,34 Smith Road
200,67 Burt Ave
300,12 You St
400,45 Younge St
500,79 Wellington
600,23 Done Road
;
RUN;
PROC SORT data= file2;
BY var;
RUN;
DATA three;
MERGE file1 (in=a) file2 (in=b);
BY var;
IF a and b;
RUN;
PROC PRINT;
RUN;
結果:
Obs var name address
1 100 john 34 Smith Road
2 200 joe 67 Burt Ave
3 400 bill 45 Younge St
4 600 bob 23 Done Road
|
|