data have;
input ID$ MAXVEL seq_id;
cards;
A 15 1
A 27 2
A 29 3
A 52 4
B 60 1
B 26 2
B 40 3
B 2 4
B 9 5
B 45 6
C 60 1
C 12 2
C 60 3
C 50 4
C 12 5
;
data want;
length cnt $10;
set have;
by id;
retain cnt val;
if first.id then do;cnt='';val=.;end;
if maxvel >25 then check='1';
if check ne '' then cnt=cats(check,cnt);
if check='' then cnt='';
if cnt in ('1','11') then do;
val+maxvel;
end;
seq=lag(seq_id);
if check='' then val=.;
if cnt='11' then val=val/2;
if val in (26:50) then out='Medium';
else if val in (51:60) then out='High';
run;
proc sort data=want;
by id seq_id ;
run;
data want2(drop=_cnt check seq cnt );
merge want(in=a rename=(cnt=_cnt) drop=val out) want(in=b keep=id val out seq cnt rename=(seq=seq_id) where=(cnt='11'));
by id seq_id;
if a;
run;
... View more