|
9楼的同志的程序是不是应该可以理解为退出%do,等价地退出宏。我仿照这个理解,编写如下程序:
%macro ml(n,m,zb);
data a;
do i=1 to &n;
x=uniform(0);
fi=arcos(-1);
y=sin(2*fi*x);
output;
keep y x fi i;
end;
%do j=2 %to &m;
proc fastclus data=a out=Clust&j maxclusters=&j noprint;
var x;
proc sort out=flei&j;by cluster;
proc means noprint data=flei&j;
var x; by cluster;
output out=menx&j(keep=rx) range=rx;
proc means data=menx&j noprint;
var rx;
output out=big&j max=zuizhi;
data pb&j;
set big&j ;
%if zuizhi le &zb %then %return;
%end;
%%mend ml(n,m,zb);
%ml(200,15,0.4);run;
但提交出现问题,问题就在%if 这里,不知高手是否给予修正呢?
谢谢。
上面程序是确定一个最好的分类数,使得各个类内的变量的极差最大值小于事先给定的值,此时退出循环,得到最终的分类结果。
|