Добавьте количество дней в формат даты и времени 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.;).

Другие вопросы по тегам