さて前回までは、0とか9とかを使って数字を好きに加工してきましたが、今回は日付フォーマットの話です。
SASを始めた人が最初につまづきやすいのが、SASは数字と文字しか型がない?日付は?
日付も数字型?フォーマットで表現?は?みたいなとこです。実際わかりにくいですもんね。
data Q1;
X=19875;
format X yymmdds10.;
run;
と、Xに19875という数字を割り当ててますが、こいつに日付フォーマットをあてると
まあ、こうなって日付になるわけです。起点日から何日目かを数値にすることで日付を表現してるわけですね。
EXCELなんかでも日付いれてから、表示形式を標準とかにしたら変な数字になったりしますよね、
あれと同じです(EXCELとは起点日が違うので同じシリアル値にはなりませんが)
さて、そのように癖のある日付フォーマットの概念なので、0とか9とかじゃうまく表現できません。
のでdatatypeオプションを使って、日付専用の部品を使っていじります。
proc format;
picture date_1_ (default = 30)
low-high = '%Yねん%mがつ%dにち' (datatype=date);
picture date_2_ (default = 30)
low-high = '%Y年が始まって%j日目' (datatype=date);
picture date_3_ (default = 30)
low-high = '%y年の第%U週' (datatype=date);
run;
3種類作ってみました。
それぞれputした結果は
data A1;
set Q1;
X_1=put(X,date_1_. -L);
X_2=put(X,date_2_. -L);
X_3=put(X,date_3_. -L);
run;
です。
%Yとか%mとかが、決まったキーワードで部品なんです。
例えば%Yは年を4ケタで表示の意味で、%mは月を数字で表示・・・って感じです。
大文字と小文字で別の意味になるので要注意!
ちなみにキーワードはたくさんあって紹介しきれないのでSASのヘルプで確認してください
http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a002473467.htm
0 件のコメント:
コメントを投稿