Assuming the input lay out is what you have and the data is ordered by id things are little simpler. You have the following scenarios
1. What if the by group starts with a missing value and the first non miss value in the by group is 1?
2. The first value is missing but all the other values are okay
Assumption: Data is already ordered by id and everything is in place
data example;
input ID $ seq_have data;
cards;
1 1 111
1 2 222
1 . 333
2 . 444
2 2 222
2 3 333
3 . 123
3 . 123
3 . 123
4 4 444
4 . 555
;
run;
data example2;
set example;
by id;
retain have_seq;
if first.id then do;
if missing(seq_have) then do;
have_seq=1;
end;
else do;
have_seq=seq_have;
end;
end;
else do;
if ^missing(seq_have) then have_seq=seq_have;
if missing(seq_have) then do;
have_seq=have_seq+1;
*have_seq = seq_have;
end;
end;
run;
... View more