前回は1行のプログラムで「1→2」「2→1」と置き換えたけど、「1→10」「2→15」のように任意の値に置き換えたい場合どうすればいいでしょうか?
1 → 10
2 → 15
3 → 100
サンプルデータ
data DT1; input V1; cards; 1 3 2 ; run; データセットDT1 V1 1 3 2 V1 V2 1 10 3 100
2 15
|
1行で書く方法。
まじめに書くとこんな感じですが、
data DT2; set DT1; if V1 = 1 then V2=10; if V1 = 2 then V2=15; if V1 = 3 then V2=100; run; |
CHOOSEN関数を使うと1文でいけます。
data DT2; set DT1; if V1^=. then V2=choosen(V1, 10,15,100); run; |
CHOOSEN関数の構文は「choosen(N, X1,X2…)」でN番目のXの値を取得することが出来ます。
Xは数値型の変数または値である必要があります。
最近までこの関数なめてたけど、考えてみると色々使い道があっておもしろいです。
Xは数値型の変数または値である必要があります。
今回の使用法の注意点
V1に入る値は1~10くらいまでならいいけど、100とか飛び離れた値があると関数の引数を100個指定しなきゃいけなくなるので実用的じゃなくなる → choosen(N, X1,X2…X100)
0 件のコメント:
コメントを投稿