id gap
001 0
001 1
001 2
002 0
002 2
002 1
003 0
003 1
003 1
004 0
004 2
004 2
005 0
;
Once gap is a 1 in any position for a particular id, gap=1 for all visit for that particular id.
if gap is 0, 2, without one, then for that id gap=2 for both position ie, we change the 0 to 2.
that above data will Change to:
id gap
001 1
001 1
001 1
002 1
002 1
002 1
003 1
003 1
003 1
004 2
004 2
004 2
005 0
;
This probably comes close enough:
data want;
do until (last.id);
set have;
by id;
if gap=1 then new_gap=1;
else if gap=2 and new_gap=. then new_gap=2;
end;
do until (last.id);
set have;
by id;
if new_gap > . then gap = new_gap;
output;
end;
drop new_gap;
run;
When I say comes "close enough", the program doesn't check for 0 and 2. It checks for 2 (but without 1).
The top loop reads all the observations for an ID, looking at the GAP values. Then the bottom loop re-reads the same observations, changes GAP, and outputs.
This probably comes close enough:
data want;
do until (last.id);
set have;
by id;
if gap=1 then new_gap=1;
else if gap=2 and new_gap=. then new_gap=2;
end;
do until (last.id);
set have;
by id;
if new_gap > . then gap = new_gap;
output;
end;
drop new_gap;
run;
When I say comes "close enough", the program doesn't check for 0 and 2. It checks for 2 (but without 1).
The top loop reads all the observations for an ID, looking at the GAP values. Then the bottom loop re-reads the same observations, changes GAP, and outputs.
Thank you very much!!!!
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.
Find more tutorials on the SAS Users YouTube channel.