SETやMERGEで使えるIN=オプションについて解説をしたいと思います。
SET データセット1 ( IN = 一時変数1 ) データセット2 ( IN = 一時変数2 ) ・・・ ; |
・ データセット1 から持ってきたオブザベーションの場合「1」、それ以外「0」が 一時変数1 に入る
・ データセット2 から持ってきたオブザベーションの場合「1」、それ以外「0」が 一時変数2 に入る
・ 一時変数名は適当な名前でOK。またこの一時変数は出力データセットには残らない。
サンプルデータ作成
data DT1; length A 8. B $10.;
A=1; B="aa"; output; A=2; B="bb"; output; run;
data DT2; length A 8. C $10.; A=2; C="cc"; output; A=3; C="dd"; output; run;
|
例① SETステートメントでの例
data OUT1;
set DT1 (in=FLG1) DT2 (in=FLG2) ; /* 別の変数に格納してデータセットに残す */ X = FLG1; Y = FLG2; run;
|
例② MERGEステートメントでの例
data OUT2;
merge DT1 (in=FLG1) DT2 (in=FLG2) ; by A; /* 別の変数に格納してデータセットに残す */ X = FLG1; Y = FLG2; run;
|
実践例
上の例②で、DT1とDT2の両方に存在するBY値のオブザベーションを特定したい場合、以下の条件を書けばいい事が分かりますね。if FLG1=1 and FLG2=1 then COMMON_FLG=1;
また、DT1になくて、DT2にのみ存在するBY値のオブザベーションを特定したい場合、以下の条件を書けばいけますね。
if FLG1=0 and FLG2=1 then DT2ONLY_FLG=1;
0 件のコメント:
コメントを投稿