Here is my data set: data aaa; infile cards missover; input no a1 $ b1 c1 a2 $ b2 c2 a3 $ b3 c3; cards; 1 x1 1 1 z1 2 1 y1 1 2 2 x2 1 2 y2 1 2 3 x3 2 2 ; run; proc format; value b1fmt 1="a" 2="b"; value c1fmt 1="m" 2="f"; run; Here is what I want to get: data set: no a1 b1 c1 1 x1 a m 1 z1 b m 1 y1 a f 2 x2 a f 2 y2 a f 3 x3 b f Following is my code: %macro new; Data _1; array num{9,3} ; if _n_=1 then do z=1 to 3; retain i; set aaa; array avar{*} no b1 c1 b2 c2 b3 c3; %let S=3; %let Four=4; %DO k=1%TO 3; i=i+1; num{i,1}=avar(1); num{i,3}=avar(&S); num{i,4}=avar(&Four); S=%EVAL(&S+3); Four=%EVAL(&Four+3); %END; end; run; %mend; %new; the error is :Array subscript out of range at line 3 column 45 The other problem is a1 a2 a3 is not numeric. So here in the code I did not put a1,a2,a3. How could I solve this problem? Also I have not use format to convert the value to 'a,b,m,f'. But I know how to convert them in the last step. So At first I need to solve above problems. How could I do?
... View more