全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1604 2
2017-01-16
请教各位同学。我编了一个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结果;

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

扫码加我 拉你入群

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

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

全部回复
2017-1-16 11:49:55
对了,我的%Analysis里实现的是一个画条形图的功能,不管我用哪种方法对var做循环,输出窗口中都只有一张条形图。
二维码

扫码加我 拉你入群

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

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

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;


二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群