ただ、やっぱりそういう後ろ向きな姿勢は良くないですね。苦手克服のために紹介します。
そのため、もしかしたら、間違いがあるかもしれないので、指摘してください。
pictureステートメントは、かなり自由度の高い、出力形式を創造するステートメントです。
おなじproc formatでも、valueステートメントは、この値(範囲)ならこの文字を表示みたいに、決め打ちチックですが、pictureは違います。
いいから、とっとと例をだせ!という声が聞こえてきそうなので、そうします。
data Q1;
do X=1 to 20 by 4;
output;
end;
run;
例えば、値が15までは入りうる数字なので、そのまま表示するが、15を超えたら異常値というシチュエーションの場合、次のようにフォーマットを定義できます。
proc format;
picture FT_1_
1-15 ='99'
other= '異常値じゃない?';
run;
で、これを実際当ててみると
data A1;
set Q1;
format X FT_1_.;
run;
はい、注目すべきは一ケタの数字はゼロパティング(0がついて二ケタ表示)されていることですね。
pictureステートメントで'99'とすると2ゼロパティングして2ケタ数字でデータの値を表示するということになります。'999'とすれば当然「001」のようになります。
いちいちvalue 1='01' 2='02' 3='03'・・・なんてことをしなくていいわけです。
ゼロパティングなんていらねーよ!という場合は次のようにします。
proc format;
picture FT_2_
1-15 ='00'
other= '異常値じゃない?';
run;
で当ててみると
data A2;
set Q1;
format X FT_2_.;
run;
はい、15以下の値は元のまま表示されます。
さて、このままだと15を超える値は全部「異常値じゃない?」となってしまい、フォーマットを解除しないとデータの値がわかりません。
ので、以下のようにフォーマットを作ります。
proc format;
picture FT_3_
1-15 ='00'
other= '00は異常値じゃない?';
run;
で、当ててみると
00は異常値じゃない?としたことによって、00の部分に実際の
データの値が入ります。凄くないですか?
でも、まだまだこんなもんじゃないです。
とりあえず今回はここまで。
0 件のコメント:
コメントを投稿