リンクサイト「SAS忘備録」で
「条件式(IF/WHERE)におけるINオペレータの小技」
http://sas-boubi.blogspot.jp/2014/01/in.html
の中で
data DT1;
do V=1 to 6 ;
output;
end;
run;
proc print data=DT1 noobs;
where V in (1, 3 : 5) ;
run;
とすると
となるように、inの中での3:5が3~5の範囲指定として実行されるという技を紹介されていました。
今回は、文字型について、括弧の中にコロンを入れるのではなく外に出したら、どうなるかを見てみます。
data Q1;
length X $20.;
X='ABCD';output;
X='ABCDEF';output;
X='DEFG';output;
X='AB';output;
X='BBC';output;
X='DBC';output;
run;
こういうデータがあって
data A1;
set Q1;
where X in:('ABC','DE','DB');
run;
としたら、どうなるでしょうか?
答えは
です。
これはつまり、Xの値がABCから始まるか、DEから始まるか、DBから始まる場合に抽出しているということです。
keepやdropステートメント等で X_:とするとX_から始まる変数名の変数が対象になったり
set X_:とするとX_から始まるデータセット名のデータセットが対象になったりするのと同じ
前方一致を意味するコロンな使い方です。
なんでinじゃなくて
data A2;
set Q1;
where X=:'ABCDE';
run;
でも使え、
こうなります。
コロンは色々使える分、ややこいですね
0 件のコメント:
コメントを投稿