SAS中文论坛

标题: 如何生成一组宏变量? [打印本页]

作者: shiyiming    时间: 2009-5-6 13:00
标题: 如何生成一组宏变量?
在一个宏循环中,如何将非宏变量的值,赋值给一组宏变量?
如:
%do i=1 %to 10;
.....
a=...
p=1-probf(a,...);
call symput("P_&i",p);
%end;
这里如何将每次循环改变的p值,赋值给宏变量呢?因为call symput是在最后一个循环才生成宏变量的。本人经常遇到这样问题,都很难解决。谢谢啊。
作者: shiyiming    时间: 2009-5-6 20:41
标题: Re: 如何生成一组宏变量?
data _null_;
  do i=1 to 10;
      a=i;
      p=1-probf(a,1,2);
      call symput("P_"||strip(put(i,2.)),put(p,6.4));*2 for max i=99 for better precision p, can change format;
end;
run;

%put _user_
;
作者: shiyiming    时间: 2009-5-6 20:59
标题: Re: 如何生成一组宏变量?
%macro vvv;

%do i=1 %to 10;
    %let a=%eval(&i);
    %let p_&i=%sysevalf(1-%sysfunc(probf(&a,1,2)));
%end;
%put _user_;

%mend;

%vvv
;
作者: shiyiming    时间: 2009-5-6 22:36
标题: Re: 如何生成一组宏变量?
谢谢楼上的deshengsu ,真的万分感谢!




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2