Just use arrays. Take your code and replace _a with (i) and add the array statements and a DO loop.
data nd;
set nd;
array air air_a air_b air_c ;
array car car_a car_b car_c ;
array bike bike_a bike_b bike_c ;
array bike_res bike_res_a bike_res_b bike_res_c;
do i=1 to dim(air);
if in2016=1 then do;
if road = 98 then air(i) = 98; /*non*/
else if road = 2 then air(i) = 0;
end;
if road = 1 then do;
if car(i) in (10, 1) then bike_res(i) = 0; /*withdrew or completed*/
end;
if car(i) in (2,4) then do; * currently or deferred;
if bike(i) = 1 then bike_res(i) = 0; *year12;
else if bike(i) in (2,3,4,5,6) then bike_res(i) = bike(i) - 1;
else if bike(i) in (7,8,9,10) then bike_res(i) = 6;
else if bike(i) = 11 then bike_res(i) = 7;
else if bike(i) in (12 13) then bike_res(i) = 8;
else if bike(i) = 14 then bike_res(i) = 9;
else if bike(i) >= 15 then bike_res(i) = 0;
end;
end;
run;
... View more