COMPRESSの第3引数

恐らく、僕だけだと思うのですが、、

例えば、ある文字変数から数字だけを残して他の文字を消したい場合
= COMPRESS(変数,,'KD')
逆に文字だけ残したい場合、
= COMPRESS(変数,,'KF');

と書けます。
これはSASのFAQを見て覚えたんですが
http://www.sas.com/offices/asiapacific/japan/service/technical/faq/list/body/ba250.html

その時、ちゃんと説明を読んでなかったのでしょう、KD、KFという固定された呪文というか、決まり文句だと思ってたんですが、違いました。
Kは残すという意味(多分keep) Dは数字という意味(多分digit)、それを組み合わせて、KDで「数字を残す」といったようにキーワードを組み合わせて、挙動を設定しているのでした。

数字を残すか、文字を残すと言った状況が多かったのでKDかKFばかり指定していたせいで気付くのが遅くなりました。

詳しくはヘルプや関数リファレンス等、正式なもので勉強していただけたらと思いますが
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000212246.htm



簡単な例だけ

data Q1;
X='123 AaaaBb_';
run;





に対して

data A1;
set Q1;
A1=compress(X,'ab');/*aとbを取り除く*/
A2=compress(X,'ab','k'); /*aとbだけ残す*/
A3=compress(X,'ab','ik'); /*aとAとbとBだけ残すiは大文字小文字を無視する意味*/
A4=compress(X,,'d');/*数字を取り除く*/
A5=compress(X,,'kd');/*数字を残す*/
A6=compress(X,,'f');/*アンダースコアと文字を取り除く*/
A7=compress(X,,'kf');/*アンダースコアと文字を残す*/
A8=compress(X,,'l');/*アルファベット小文字を取り除く*/
run;

とすると


みたいな感じです。

多分、僕より詳しい方、山ほどいると思うので、もっと面白い使い方の例があれば教えてください。






0 件のコメント:

コメントを投稿