我自己也下了这样的程序,不知道为什么一直得到的deltasum数据集中全部是迷失数据
%macro deltacal;
data deltasum;
sum=.;
mean=.;
delta=.;
run;
%do miu_=10 %to 20 %by 5;
%let delta=%sysevalf(&miu_/100);
%cusum(t=50000);
proc sql;
create table delta as
select * from deltasum;
proc sql;
create table deltasum as
select * from delta
outer union
select * from asdmean;
%end;
%mend deltacal;
%deltacal;
这是我的数据的第二部分
第一部分如下
%macro cusum(k=.05,ucl=4.1089,w=50,outfile=asdsum,t=50,delta=.10);
Data &outfile(drop=mm);
do mm=1 to &t;
j=0;
c=0;
do while (c<&ucl);
j+1;
if(j>=&w) then x=rannor(0)+&delta;
else x=rannor(0);
c+x-&k;
c=max(c,0.00);
end;
output;
end;
run;
data asdmean(keep=mean sum delta);
set asdsum end=endobs;
if (j>=50) then do;
sum+1;
rl+j-50;
end;
if endobs;
mean=rl/sum;
delta=&delta;
run;
%mend cusum;
%cusum;作者: shiyiming 时间: 2009-6-8 20:57 标题: Re: 求助 为什么用proc sql 连接两个数据集得到的是迷失数据 %macro deltacal;
data deltasum;length sum 8 mean 8 delta 8;delete;run;
%do miu_=10 %to 30 %by 5;
%let delta=%sysevalf(&miu_/100);
%cusum(t=50000);
proc append base=deltasum data=asdmean force;run;
%end;
%mend deltacal;
options nomprint nomlogic nosymbolgen;;
option nonotes;
%deltacal
;
*that is my second part;作者: shiyiming 时间: 2009-6-8 22:25 标题: Re: 求助 为什么用proc sql 连接两个数据集得到的是迷失数据 When you call the macro Cusum, you should pass the new delta value to it. Or the delta value for Cusum will always be 0.10.
i.e.:
%cusum(t=50000,delta=&delta.);