各位大侠,这是我写的一个产生数据集Txy的程序。由于需要产生的数据集太过繁多,小弟想通过do循环来实现宏程序的重复合并,可是似乎无法奏效,求教各位。
宏:
%macro des(x,y,z);
data k;
set a;
if group_1=&x and group_2=&y then output;
run;
proc sort data=k;by order_2;run;
proc means data=k noprint;
var &z;
by order_2;
output out=b n= mean= std= min= median= max=/autoname;
run;
data b(keep=order_2 n mean sd minimum median maximum);
set b;
n=put(%upcase(&z)_N,3.);
Mean=put(%upcase(&z)_Mean,6.2);
SD=put(%upcase(&z)_StdDev,7.3);
Minimum=put(%upcase(&z)_Min,5.1);
Median=put(%upcase(&z)_Median,6.2);
Maximum=put(%upcase(&z)_Max,5.1);
run;
proc transpose data=b out=c;
id order_2;
var n mean sd minimum median maximum;
run;
data t&x.&y.(keep=name per1 per2 per3 per4 group_1 group_2);
set c;
per1=_1;
per2=_2;
per3=_3;
per4=_4;
group_1=&x;
group_2=&y;
rename _name_=name;
run;
%mend des;
循环程序:
data s;
%do i=1 %to 10;
%do j=1 %to 4;
set s %des(&i,&j,aval);
output;
%end;
%end;
run;