2017年10月5日木曜日

【CDISC】変数 [--DTC] から、ADTM, ADT, ATM への変換



CDISC関連の話。


変数「--DTC」を、ADaM変数「ADTM」「ADT」「ATM」に変換するときの、ISO8601のフォーマットと書き方を載せときます。




[--DTC] が日付のみ (時刻を含まない) の場合


※以下の例は「2017」「2017-10」等の、日付が揃っていないデータは想定していません

data DT1;

    LBDTC = "2017-10-03";

    ADT    =  input( LBDTC, e8601da. );

run;





[--DTC] が日時の場合


※以下は想定していません。
・日時が揃っていないデータ(「2017-10-03」「2017-10-03T09」等)
・秒の小数部分が含まれているデータ(「2017-10-03T09:10:12.345」等)

※以下リンクの記事に紹介してるバグにも注意。
【SAS9.3以前のBug】E8601DTインフォーマットで正しく変換できないことがある。


data DT1;

    LBDTC = "2017-10-03T09:10:00";

    ADTM =  input( LBDTC, e8601dt. );
    ADT    =  input( LBDTC, e8601da. );
    ATM    =  timepart( input( LBDTC, e8601dt. ) );

run;

・ATMだけいったん日時変換してから、TIMEPART関数で時刻部分をとりだしています。




以上、自分用のメモ記事でした。

0 件のコメント:

コメントを投稿