Добавьте количество дней в формат даты и времени SAS
Мне нужна помощь с форматом даты и времени SAS. Набор данных (включая нужный столбец exp_dt):
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
Итак, мне нужно добавить действительные значения (количество дней) в datetime. Я только начал с SAS Base, и я не уверен, приемлем ли какой-либо другой формат даты и времени. Я пытался с этим, но не уверен, если даже идет в правильном направлении:
PlannedSchedTime = datetime ;
Postunit = 'DAY' ;
postval = valid ;
exp_dt = put(intnx(Postunit,PlannedSchedTime,postval,'same'),datetime20.);
put exp_dt= ;
run;
Кроме того, я работаю над проектом в SAS Enterprise Guide, так что, возможно, есть более простой способ выполнения задач с графическим интерфейсом?
2 ответа
Вот пример кода, который напечатает желаемый результат. Как и в других ответах говорится, 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;
Вы определенно на правильном пути! Потому что вы имеете дело с datetime
значения, заменить DAY
от dtDAY
,
Если не хочешь exp_dt
чтобы быть столбцом символов, не используйте put
функция, а скорее формат (например, format exp_dt2 datetime20.;
).