参考了一个国外文献
data a;
input id a_number b_number c_number ;
cards;
1 100 200 300
2 200 330 400
;
run;
proc contents data = a
out=var_names(keep = name) noprint;
run;
data change;
set var_names;
where substr(name,length(name)-6) = "_number";
run;
data _null_;
file 'c:\change';
set change end = eof;
if _n_ = 1 then put '%let allthev= ';
put name;
if eof then do;
call symput('num' , compress(_n_));
put ';';
put 'run;';
end;
run;
%include 'c:\change';
data result;
set a;
array x[&num] &allthev;
do i = 1 to #
x{i}=0.8*x{i};
end;
drop i;
run;


雷达卡




用proc sql生成macro variable确实更方便!
京公网安备 11010802022788号







