各位大侠,这是我写的一个产生数据集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;