data times;
input id unit $ time1 $ time2 $;
length time1 $ 8 time2 $ 8;
datalines;
1 E1 12:00:01 13:00:00
2 E2 12:15:00 13:01:00
4 E3 12:25:00 13:15:00
11 E1 13:06:00 13:09:00
;
proc sort data=times out=sort_times;
by time1;
run;
proc sql;
create table new like sort_times;
alter table new add events num;
quit;
%macro event(t, i);
%let t1=trim("&t");
data temp (keep= id unit time1 time2 events);
set sort_times;
retain events 0;
if trim(time2)>= &t1 & trim(time1)< &t1 then events+1;
if id=&i then do;
output temp;
stop;
end;
proc append base=new
data=temp;
run;
%mend;
data _null_;
set sort_times;
call symputx('timex', trim(time1));
call symputx('idx', id);
call execute ('%event(&timex, &idx)');
proc print data=new;
run;
... View more