2017年6月16日金曜日

PROC FORMAT の INVALUE ステートメントで、数値の範囲を定義できる小技。


PROC FORMAT の INVALUEステートメントは、
ある文字値を任意の数値として読込み・置換したい場合」に使います。

(詳しい機能は「FORMATプロシジャ入門」みたいな記事かいたらそちらで解説します)



そして、小技ってほどでもないですが、
INVALUEでは以下青字のように、数値の範囲を定義する事が出来ます。

proc format;
   invalue test_
       "aaa"  = 10
       1 - 20  = 20
   ;
run;

・"aaa"という文字値を、「10」という値に変換。
1~20までの文字値を、「20」という値に変換。

という定義をしています。
(※1~20までの”数値”ではなく、1~20までの”文字値”に対してってとこに注意してください。)


この定義を利用し、以下のように INPUT関数で、、
data a;
   x = input( "aaa", test_.);
   y = input( "6.5", test_.);
run;
  X  
Y
 10  20 

"aaa"という文字値を「10」に変換
"6.5"という文字値を「20」に変換

という感じの処理ができます。


0 件のコメント:

コメントを投稿