hi, as i want to replace mutiple variables' missing value by the previus value using an array. i have tried the code below, expected to replace three variables,(not create new variables): dev,legal,audit. which was defined as vars. however,it does not work. and except for other variables there only a new _dev variable in the output dataset. whose value is all missing. it is not my expected results.i do not need the new variables ,just replace the original variable' missing value. %macro replace(n1=,id=,data=,n4=,vars=);
%let m1 = %sysfunc(lag(&id));
proc sort data = &n1 out = temp;
by &id;
run;
data &data;
set temp;
by &id;
array miss(&n4) &vars;
array missg(&n4);
retain missg(&n4);
do i = 1 to &n4;
%if &id = m1 %then %do;
missg(i)=miss(i);
else miss(i)=missg(i);
%end;
end;
drop of missg: i;
run;
%mend replace;
%replace(n1=temp,id=countryname,data=temp1,n4=3,vars=dev legal audit);
... View more