全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1219 3
2013-09-10
我有个很简单的问题想请问各位老师:

%macro a;
  %do i=1 %to 10;
    %if &i. in (1 3 5 7) %then ...;
  %end;
%mend a;

请问上面这个if应该如何表达?我不想使用四个排比句,除非不得已。谢谢。。

另外我记得%do i= 1,3,5,7 是不行的,当时有一个做法是:
%do i=1 %to 4;%let T&i.=%scan(1 3 5 7,&i.,' ');%end;
...
%if &i. = &&T&i..

现在不得已是这样做的,不知还有啥好点的办法么?谢谢。。。

二维码

扫码加我 拉你入群

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

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

全部回复
2013-9-11 09:23:44
复制代码
From sas 9.2
Sample 35591: How to use the new macro IN operator for SAS 9.2

http://support.sas.com/kb/35/591.html
二维码

扫码加我 拉你入群

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

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

2013-9-12 21:39:05
options minoperator; 这个option允许在macro中使用in operator。
%if %eval(&i in 1 3 5 7) %then %do;
        %put &i is in the list;
%end;
二维码

扫码加我 拉你入群

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

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

2013-9-14 07:03:07
You can levelage the in function in sas9.3 as below.

141  %macro a;
142    %do i=1 %to 10;
143      %put i=&i in_return_value=%sysfunc(in(&i,1, 3, 5));
144    %end;
145  %mend a;
146  %a
i=1 in_return_value=1
i=2 in_return_value=0
i=3 in_return_value=1
i=4 in_return_value=0
i=5 in_return_value=1
i=6 in_return_value=0
i=7 in_return_value=0
i=8 in_return_value=0
i=9 in_return_value=0
i=10 in_return_value=0
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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