I eventually ended up creating multiple datasets within the loop, and then merged them together. Here's the code I used: %let groups=5; %let pre1=cta; %let qs1=23; %let pre2=ctb; %let qs2=18; %let pre3=ctc; %let qs3=4; %let pre4=cm2; %let qs4=24; %let pre5=cf5; %let qs5=13; %macro profile; %do j=1 %to &groups; data rewrite&j (keep=occasions &&pre&j.._1-&&pre&j.._&&qs&j t_&&pre&j.._1-t_&&pre&j.._&&qs&j); set step1; array array1 &&pre&j.._1-&&pre&j.._&&qs&j; array array2 t_&&pre&j.._1-t_&&pre&j.._&&qs&j; do i=1 to &&qs&j; if array1 = 5 then array2=1; end; run; proc sort data=rewrite&j; by occasions; run; %end; %mend; %profile; data final_rewrite; merge rewrite1-rewrite&groups; by occasions; run; What the code does is it loops through 5 times and creates five datasets. Each new dataset creates a new array of variables. I used the %pre type variables to indicate what the prefix of the variable names are, and the %qs variables to indicate how many questions there were that used that prefix. So, the first time through, it manipulates cta_1-cta_23. After the loop is done, it merges all of the information together so that I have everything in a single dataset. Thanks to Astounding's advice, I got the macro variables to resolve properly, and after that it was just a matter of figuring out how I could include array statements in a loop, since you can't utilize something like "array1" twice. Thank you everyone!
... View more