SAS中文论坛

标题: MACRO里关于in的一个应用问题 [打印本页]

作者: shiyiming    时间: 2011-5-11 13:23
标题: MACRO里关于in的一个应用问题
data a;
input x y z;
cards;
14 2 0
3 7  1
5 12 0
8 7  1
;
run;
如果我想写个
%macro mz;
%let v1=z;
%let v2=y;
%let v3=z;
%do i=1 % 3;
%if &&v&i.=x %then %do;
...
%end;
%else %if &&v&i.=y %then %do;
...
%end;
%mend;
这个程序是可以的。
但是下面的却不可以.
%macro mz;
%let v1=z;
%let v2=y;
%let v3=z;
%do i=1 % 3;
%if &&v&i. in (x,y) %then %do;
...
%end;
%mend;
这是为什么?可以改以及怎么改?因为真实数据的variable很多,不可能一个一个的写下来。
谢谢!!!
作者: shiyiming    时间: 2011-5-11 13:41
标题: Re: MACRO里关于in的一个应用问题
如果你用的是sas9版本以上的话,需要在options里面加个选项minoperator 这样sas的macro就可以使用in操作符了。
作者: shiyiming    时间: 2011-5-11 14:07
标题: Re: MACRO里关于in的一个应用问题
use 'in' or '%in' in MACRO?
作者: shiyiming    时间: 2011-5-11 14:21
标题: Re: MACRO里关于in的一个应用问题
in
作者: shiyiming    时间: 2011-5-11 14:25
标题: Re: MACRO里关于in的一个应用问题
%macro mz;
%let v1=z;
%let v2=y;
%let v3=z;
%do i=1 % 3;
%if &&v&i. in (x,y) %then %do;        or /*%if &&v&i. in ('x','y') %then %do;  */
...
%end;
%mend;

变量名需要引号吗?谢谢!
作者: shiyiming    时间: 2011-5-11 15:08
标题: Re: MACRO里关于in的一个应用问题
宏里面的字符都不用加引号,除非他含有引号,另外默认的分隔符是空格,如果你想修改分隔符的话需要用mindelimiter,如mindelimiter=','
作者: shiyiming    时间: 2011-5-11 15:10
标题: Re: MACRO里关于in的一个应用问题
非常感谢!!!




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