"2018-11-15T10:45"の様な形式の日付の文字変数を,日付部分だけSAS日付に変換する時ってあると思います.
今の例で言うと,"2018-11-15T10:45"文字値を2018-11-15のSAS日付の変数に変えると言うだけです.
以下にプログラムと実行ログを載せているので他に書くこと無いのですが,SAS9.3以下だとおかしくなることがあります.
もともとの文字変数側のlengthが短いと正しくSAS日付に変換できないことがあるようです.
SAS9.4だとこんなことは無く何も気にしなくて大丈夫です.
/*---------- プログラム ----------*/
data HOGE ;
A = "2018-11-15T10:45" ; output ;
A = "2018-11--T10:45" ; output ;
run ;
data _null_ ;
set HOGE ;
if count(A , "-") = 2 then B = input(A,is8601da.) ;
else putlog A ;
format B yymmdd10. ;
putlog A B ;
run ;
/*---------- 実行log ----------*/
356
357 data HOGE ;
358 A = "2018-11-15T10:45" ; output ;
359 A = "2018-11--T10:45" ; output ;
360
361 run ;
NOTE: データセットWORK.HOGEは2オブザベーション、1変数です。
NOTE: DATAステートメント処理(合計処理時間):
処理時間 0.01 秒
CPU時間 0.00 秒
362
363 data _null_ ;
364 set HOGE ;
365 if count(A , "-") = 2 then B = input(A,is8601da.) ;
366 else putlog A ;
367
368 format B yymmdd10. ;
369 putlog A B ;
370
371 run ;
2018-11-15T10:45 2018-11-15 /*1レコード目をputlog*/
2018-11--T10:45 /*Aにハイフンが2個以上あるのでelse以下のputlog*/
2018-11--T10:45 . /*2レコード目をputlog*/
NOTE: データセットWORK.HOGEから2オブザベーションを読み込みました。
NOTE: DATAステートメント処理(合計処理時間):
処理時間 0.00 秒
CPU時間 0.00 秒
0 件のコメント:
コメントを投稿