当状态为PROBATION时,我想将ID的值存储在数组中。之后,我想在表中查找数组中的字段ID,以创建它们的新记录。状态已更改(我想保留原始记录和新记录(
data have;
input agreement $10. id status$15. ;
datalines;
0002255 1 PROBATION
0002255 2 NORMAL
0007777 3 NORMAL
0007777 4 NORMAL
0007777 5 NORMAL
0008888 6 PROBATION
0008888 7 NORMAL
0008888 8 NORMAL
run;
data want (drop=i);
set have;
/* by agreement;*/
output;
j=0;
i=0;
retain j;
retain i;
array ids [1000] _temporary_;
array var {1} id ;
if status='PROBATION' then
do;
i + 1;
ids{i}=id;
%put ids{i};
end;
if id=ids{j} then
do;
j+1;
status='OTHER';
output;
end;
run;
```
What I have
agreement id status day
0002255 0 NORMAL 3
0002255 1 PROBATION 4
0002255 2 NORMAL 14
0007777 3 NORMAL 23
0007777 4 NORMAL 8
0007777 5 NORMAL 9
0008888 6 PROBATION 11
0008888 7 NORMAL 12
0008888 8 NORMAL 5
What I Want
agreement id status day
0002255 0 NORMAL 3
0002255 1 OTHER 3
0002255 1 PROBATION 4
0002255 2 NORMAL 14
0007777 3 NORMAL 23
0007777 4 NORMAL 8
0007777 5 NORMAL 9
0007777 5 OTHER 9
0008888 6 PROBATION 11
0008888 7 NORMAL 12
0008888 8 NORMAL 5
0008888 8 NORMAL
试试这个
data have;
input agreement $ id status $10. day;
datalines;
0002255 0 NORMAL 3
0002255 1 PROBATION 4
0002255 2 NORMAL 14
0007777 3 NORMAL 23
0007777 4 NORMAL 8
0007777 5 NORMAL 9
0008888 6 PROBATION 11
0008888 7 NORMAL 12
0008888 8 NORMAL 5
;
data want(drop=d dd);
set have;
if status ne "PROBATION" then d = day;
else do;
status = "OTHER";
dd = day;
day = d;
output;
status = "PROBATION";
day = dd;
end;
output;
retain d;
run;