У меня есть набор данных с идентификаторами, и каждый ID имеет несколько дат (фактически datetime). Я хочу использовать PROC SQL для получения минимального времени и времени, а также добавить минимум 1 год. Я пытаюсь сделать все это в одном PROC SQL, но я не знаю, как это сделать. Ниже приведены две попытки. Буду признателен за любые советы.sas proc sql - получите мин. Дату и добавьте 1 год
*** GENERATE RANDOM DATES AFTER JAN 1, 2012 AND CREATE DATE/TIME VARIABLE ***;
data have ;
format date mmddyy10. dt datetime15.;
do person_id=100, 200, 300, 400, 500;
do i = 1 to 100;
jdate = int(1000 * ranuni(123987));
date = mdy(1,1,2012) + jdate;
dt = dhms(date, 0,0,0);
output;
end;
end;
run;
*** TRY1: THIS DOES NOT WORK - GETS MIN DATE/TIME AND REMERGES WITH EVERY RECORD***;
proc sql;
create table try1 as
select min(dt) as index_dt format=datetime15. ,
(dt + 365*24*60*60) as followup_date format=datetime15.
from have
;
quit;
*** TRY2: USE MIN() IN "HAVING" STATEMENT ***;
*** PROBLEMATIC IF PERSON_ID HAS MIN(DT) OCCUR MULTIPLE TIMES ***;
proc sql;
create table try2 as
select person_id,
dt as index_dt format=datetime15.,
(dt + 365*24*60*60) as followup_date format=datetime15.
from have
group by person_id
having dt=min(dt)
;
quit;
Благодарности - «рассчитанной» утверждение, что мне нужно! И второй Спасибо за код INTNX, чтобы добавить год. – SunnyRJ