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