data have;
input Id $1. date :monyy5. status $ ;
format date monyy5.;
datalines;
A jan01 ND. .
A feb01 Default 4
A mar01 Prob. 3
A apr01 prob. 2
A may01 prob. 1
A jun01 ND. .
A jul01 ND. .
A aug01 ND. .
A sep01 Default. 5
A oct01 Prob. 4
A nov01 prob. 3
A dec01 prob. 2
A jan02 prob. 1
A jan02 ND. .
;
data temp;
set have;
flag=ifn( status='ND.',0,1);
n+1;
run;
data temp;
set temp;
by id flag notsorted;
f+first.flag;
run;
proc sort data=temp;
by id descending n;
run;
data temp2;
set temp;
by id;
if first.id or status='ND.' then group=0;
else group+1;
run;
proc sql nowarn;
create table want as
select id,date,status,case when group=0 or count(*)>6 then . else group end as want
from temp2
group by id,f
order by id,n;
quit;
... View more