See this:
data have;
infile datalines dsd dlm=',' truncover;
input id:BEST12. score:BEST12. seq:BEST12. vis:BEST12.;
datalines;
1,22,1,1
1,23,2,1
2,12,1,1
2,22,2,1
3,11,1,1
3,23,2,1
3,19,3,2
3,13,4,2
;
data want;
retain id score seq vis; /* combines retain for new seq and order of columns */
set have (drop=seq);
by id;
_score = lag(score);
if first.id
then seq = 1;
else seq + 1;
output;
if mod(_n_,2) = 0
then do;
score = score - _score;
seq + 1;
output;
end;
drop _score;
run;
proc print data=want noobs;
run;
Result:
id score seq vis
1 22 1 1
1 23 2 1
1 1 3 1
2 12 1 1
2 22 2 1
2 10 3 1
3 11 1 1
3 23 2 1
3 12 3 1
3 19 4 2
3 13 5 2
3 -6 6 2
... View more