関数の中に式を書くテクニック。
サンプルプログラム
data DT1; V1 = 1; V2 = "abc"; VSUM = sum( V1=1, index(V2,"b")>0 ); run; |
解説
関数の中にあるそれぞれの式には、
条件に合致する場合「1:true」、合致しない場合「0:false」が返される。
上記サンプルの場合、
・式「V1=1」の結果は「1:true」
・式「index(V2,"b")>0」の結果は「1:true」
・「sum(1:true + 1:true)」=「2」となる。
応用例
SUM関数での応用例としては
・条件に当てはまる個数を知りたい
・IF文を短縮させたい
といったとき役に立つ。
IF文の短縮とは、、
条件① | 「V1」=「1」である。 |
条件② | 「V2」に"b"という文字が含まれている。 |
・条件が全て当てはまらない場合 ・・・ FLG=「1」 ・いずれか当てはまる場合 ・・・ FLG=「2」 ・全て当てはまる場合 ・・・ FLG=「3」 |
通常、以下のようなIF文を書くことになるけど、、
if not (V1=1 or index(V2,"b")>0) then FLG=1;
if V1=1 or index(V2,"b")>0 then FLG=2;
|
関数の中に式を入れる方法を使うと、
VSUM = sum(V1=1, index(V2,"b")>0);
if VSUM = 0 then FLG=1;
if VSUM > 0 then FLG=2; |
このようにすっきりした文を書くことが出来る。
まとめ
パフォーマンスが悪くなったり、関数の中の式があまりにも長文になる場合を除いて、スッキリと見通しのいいプログラムになるのであれば積極的に使ってます。
0 件のコメント:
コメントを投稿