SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 643|回复: 3
打印 上一主题 下一主题

如何生成一组宏变量?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-5-6 13:00:11 | 只看该作者

如何生成一组宏变量?

在一个宏循环中,如何将非宏变量的值,赋值给一组宏变量?
如:
%do i=1 %to 10;
.....
a=...
p=1-probf(a,...);
call symput("P_&i",p);
%end;
这里如何将每次循环改变的p值,赋值给宏变量呢?因为call symput是在最后一个循环才生成宏变量的。本人经常遇到这样问题,都很难解决。谢谢啊。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-5-6 20:41:44 | 只看该作者

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_
;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-5-6 20:59:25 | 只看该作者

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
;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-5-6 22:36:16 | 只看该作者

Re: 如何生成一组宏变量?

谢谢楼上的deshengsu ,真的万分感谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-5 14:10 , Processed in 0.122495 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表