2018年3月1日木曜日

PROC FORMAT入門5 : PICTUREステートメント



PICTUREステートメント1」の続きです。
(基本的な動きを知らない方はまず上記の記事をご確認下さい)


PICTUREステートメントで小数を扱う時に使用する「ROUNDオプション」の説明をしていきます。





* PICTUREフォーマットの定義 ;
proc format;
   picture TEST1_
      0 - 100 = '009.00%'
   ;
   picture TEST2_ (round)
      0 - 100 = '009.00%'
   ;
run;


・「ROUNDオプション」をつけると四捨五入してくれます(今回は書式を '009.00%' と定義したので、小数点以下第3位を四捨五入し、第2位まで表示するようにしています)


・「ROUNDオプション」をつけないと切り捨てになります(今回は書式を '009.00%' と定義したので、小数点以下第3位を切り捨てし、第2位まで表示するようにしています)


・オプションの組み合わせ・使用方法によっては、動作しなかったり動きが変わるため要挙動確認!
その他、ミスりやすい挙動について、記事の最後のほうに解説記事のリンクを載せているのでご参照下さい。






では、適当なデータを作って、FORMAT変換後の結果を見てみましょう。

* Sample Data ;
data DT1;
   input X;
   cards;
12
12.34
12.345
;

* Format変換してみる ;
data DT2;
   set DT1;
   length Y1 Y2 $20.;
   Y1 = put(X,TEST1_.);
   Y2 = put(X,TEST2_.);
run;

 X  Y1  Y2 
12 
  12.00%   12.00% 
12.34 
  12.34%   12.34%
 12.345 
  12.34%  12.35%


ここまでそんなに難しくないですよね。
でも実は内部ではちょっと複雑な動きをしています。

とくにPICTUREステートメントで小数を扱う場合に、ちゃんと内部の動きを理解してないと想定外な結果になり痛い目を見ます(以下リンク参照)

(http://sas-boubi.blogspot.jp/2018/03/proc-formatpicture.html)






PROC FORMAT入門 : 記事一覧

2. INVALUEステートメント
3. 範囲の指定

0 件のコメント:

コメントを投稿