楼主: wangshu233
1335 2

[问答] [请教]重复调用宏,且每次调用时更改宏参数,该如何实现自动化? [推广有奖]

  • 0关注
  • 0粉丝

小学生

42%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
33 点
帖子
2
精华
0
在线时间
11 小时
注册时间
2015-4-1
最后登录
2017-10-20

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请教各位同学。我编了一个SAS宏,%Analysis(var),宏变量var是每次进行Analysis的变量名。现在我希望能用%Analysis对我数据集中多个变量(例如a,b,c)进行重复操作,该如何实现每次调用时var的自动更改呢?我尝试了一些办法,但都没有达到预期的效果,比如:


data process1;
do f=a,b,c;
end;
%let Var=f;
%Analysis(&Var);
run;

这样运行后,输出窗口显示了变量c的Analysis结果;

我还尝试再编一个宏%reptrans对Analysis进行重复调用,reptrans的参数list为我要调用的变量名列表。如下:
%macro reptrans(List);
%local i condition VarXX;
%let i=1;
%let condition=0;
%do %until (&condition=1);
%let VarXX=%scan(&List,&i,'|');
%if "&VarXX"="" %then %let condition=1;
%else %do;
%local Var&i;
%let Var&i=&VarXX;
%Analysis(&&Var&i);
%let i=%eval(&i+1);
%end;
%end;
run;
%mend;

%let List=a|b|c;
%reptrans(&List);

而这种方法输出窗口只显示了变量a的Analysis结果;

于是我实在是无计可施了。。。请教各位同学,你们是怎么实现这一功能的呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:如何实现 自动化 condition Analysis Analysi 如何

沙发
wangshu233 发表于 2017-1-16 11:49:55 |只看作者 |坛友微信交流群
对了,我的%Analysis里实现的是一个画条形图的功能,不管我用哪种方法对var做循环,输出窗口中都只有一张条形图。

使用道具

藤椅
johyw 发表于 2017-1-16 21:36:08 |只看作者 |坛友微信交流群
try this:
let var='your var here'
let i = 1;  
let var_i = scan(&var, &i);
do while("&var_i" ~= "");
%Analysis(&Var);
    let i = eval(&i + 1);
    let var_i = scan(var, &i);   
end;


已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
prince315 + 50 + 10 + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 50  论坛币 + 10  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 07:05