2017-10-17 24 views
1

SAS datetime形式のヘルプが必要です。 (目的の列exp_dt含む) データセットは:SAS datetime形式に日数を追加する

datetime   valid   exp_dt 
4OCT2017:13.00.00   1   5OCT2017:13.00.00 
4OCT2017:15.20.00   7   11OCT2017:15.20.00 
6OCT2017:08.00.00   30  5NOV2017:08.00.00 

だから、私は、日時に有効な値(日数)を追加する必要があります。 私はSAS Baseを使い始めました。他の日時フォーマットが受け入れられるかどうかはわかりません。 私はこれを試してみましたが、もしでも正しい方向に行くかわからないしました:

PlannedSchedTime = datetime ; 
Postunit = 'DAY' ; 
postval = valid ; 
exp_dt = put(intnx(Postunit,PlannedSchedTime,postval,'same'),datetime20.); 
put exp_dt= ; 
run; 

はまた、私は、SAS Enterprise Guideの中でプロジェクトに取り組んでいます、ので、多分GUI作業を通じてもっと簡単な方法はありますか?

答えて

1

ここでは、目的の結果を出力するコードサンプルを示します。他の回答状態と同様に、DTDAYは、基本値が日付ではなく日時である日をSASに追加するように指示します。

data datetimes; 
    informat datetime anydtdtm. valid best12.; 
    format datetime datetime20.; 
    input datetime valid; 
    cards; 
4OCT2017:13.00.00 1 
4OCT2017:15.20.00 7 
6OCT2017:08.00.00 30 
; 
run; 

data datetimes_added; 
    set datetimes; 
    format exp_dt datetime20.; 
    exp_dt = intnx('DTDAY',datetime,valid,'SAME'); 
    put exp_dt = ; 
run; 
1

あなたは間違いなく正しい道にいる! datetimeの値を扱っているので、DAYdtDAYに置き換えてください。

exp_dtを文字列にしたくない場合は、put関数を使用せず、形式(例:format exp_dt2 datetime20.;)を使用してください。

+0

「1960-01-01 00:00:00」が人間が判読可能な形式で表示されてから、 'datetime'はほんの数秒です。だから、 '24 * 60 * 60 * valid 'を追加することもできます - 夏時間がどのように結果に影響するかわかりません。 – Petr

+1

日時の値には夏時間の概念がないため、そこに与えた単純な数学は質問の例では機能します。私はintnx関数を好むが、それはより洗練されていると解釈しやすく、解釈するのが容易だからだ。 – John

関連する問題