Hello All, I would like to repeat a process for 15 variables and I normally due this just my copying and pasting the code several times. I was wondering if an array or a macro could do the same thing? I have two things that I would like to make more 'compact" for variables pre_var1-15 1: make certain partions missing based on a conditional if test = 0 then pre_var1_v1 = .; if test in(0,1) then pre_var1_v2 = .; if test in(0,1) then pre_var1_v3 = .; 2: If data is missing fill in with previous data if var1_F = . and time <= 25 then var1_F = pre_var1_v1 ; if var1_F = . and time <= 25 then var1_F = pre_var1_v2 ; if var1_F = . and time <= 25 then var1_F = pre_var1_v3 ; Any suggestions would be great, Thank you Jack EDIT: I have edited the above text in bold. When the variable test is 0, I would like to make (pre_var1_v1 = .) and when test = 0 or test = 1 then I would like to make (pre_var1_v2 = .). For the sake of simplicity, I took out the pre_var1_v3 variable. I took out the second part, I believe if I can get a start on how to build the macro/array in the first part, I can figure out how to code it. As per request, attached is the before/ after of the data: data have; input id test time pre_var1_v1 pre_var1_v2 pre_var1_v3; cards; 1 0 0 1.5 1.6 1.4 1 1 5 0.5 1.5 1.6 1 2 10 0.9 0.5 1.5 1 3 15 0.7 0.9 0.5 1 4 20 0.6 0.7 0.9 2 0 0 1.5 1.6 1.4 2 1 5 0.5 1.5 1.6 2 2 10 0.9 0.5 1.5 2 3 15 0.7 0.9 0.5 2 4 20 0.6 0.7 0.9 ;;;;; run; data want; input id test time pre_var1_v1 pre_var1_v2; cards; 1 0 0 . . 1 1 5 0.5 . 1 2 10 0.9 0.5 1 3 15 0.7 0.9 1 4 20 0.6 0.7 2 0 0 . . 2 1 5 0.5 . 2 2 10 0.9 0.5 2 3 15 0.7 0.9 2 4 20 0.6 0.7 ;;;;; run;
... View more