SAS中文论坛

标题: 求助:一個關於循環和MACRO的問題 [打印本页]

作者: shiyiming    时间: 2010-3-22 18:00
标题: 求助:一個關於循環和MACRO的問題
数据集yeartest中有五个变量:var11 var21 var31 var12 var22,
写了以下这个macro去运行proc means
但因为缺少var32,
所以log会显示error:variable var32 not found

小弟想求教各位高手:
这种情况是不是有办法在用macro的时候,
跳过某一个不存在的变量(无法事先知道是缺了哪个变量),
不去计算它,这样log裡就不会出现error了。
还是我是该在循环里改动吗?
谢谢


%macro testscore(myvar);
proc means data=yeartest;
var &myvar;
run;
%mend testscore;

%macro testscore;
%do i=1 %to 3;
%do j=1 %to 2;
proc means data=yeartest;
var var&i&j;
run;
%end;
%end;
%mend testscore;
%testscore;
作者: shiyiming    时间: 2010-3-22 20:33
标题: Re: 求助:一個關於循環和MACRO的問題
[code:2c21aa8q]%macro testscore(inds);
        options nomprint nosymbolgen;
        %do i=1 %to 3;
                %do j=1 %to 2;
                        %let dsid=%sysfunc(open(&inds,i));
                        %let position=%sysfunc(varnum(&dsid,var&i&j));
                        %let rc=%sysfunc(close(&dsid));
                        %if &position>0 %then
                                %do;
                                        proc means data=&inds;
                                                var var&i&j;
                                        run;
                                %end;
                %end;
        %end;
%mend testscore;

data raw;
        input var11 var21 var31;
datalines;
11 21 31
;
%testscore(raw)[/code:2c21aa8q]
by the way,是不是可以考虑用_numeric_ or var:来表示变量列表呢?写macro的意义好象不大.
[code:2c21aa8q]proc means data=yeartest;
   var _numeric_;
   /* var var:; */
run;[/code:2c21aa8q]
作者: shiyiming    时间: 2010-3-22 21:02
标题: Re: 求助:一個關於循環和MACRO的問題
[quote:1eamu0o0]by the way,是不是可以考虑用_numeric_ or var:来表示变量列表呢?写macro的意义好象不大.[/quote:1eamu0o0]

如果用_numeric_来list所有的数字变量问题是1.output是巨长巨难看的一行2.以全代偏
作者: shiyiming    时间: 2010-3-22 22:14
标题: Re: 求助:一個關於循環和MACRO的問題
Hopewell真神人也!
我得慢慢消化一下才行…..
非常谢谢您!




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