电子说
前面通过对SAS Base的学习,我想大家对in运算符并不陌生,它广泛的应用于数据步或SQL条件语句中,进行条件判断或数据筛选,进而访问特定观测值。
但是在SAS中编写宏语句时,试图使用in运算符时log会报错,这是因为在默认情况下,SAS宏解析器没有开启对in运算符的支持,而把in仅仅当成常规字符来处理,而不是运算符。那么如何在宏语句中正确使用in运算符呢,今天小编带你一一梳理,如果你是SAS基础小白,请不要错过这篇推文噢
测试数据集
data test;
set sashelp.class;
run;
例1:在data step中使用IN语句
data test1 test2;
set test;
if age in (13 14) then output test1;
else if age in (11 12) then output test2;
run;
test1结果如下
test2结果如下
例2:在proc sql中使用IN语句
proc sql noprint;
create table test3 as
select*
from test
where name in ("Jane" "John");
quit;
结果如下:
例3:在宏语句中使用IN语句
结果如下:
可以看到当我们在宏语句中使用in运算符时在日志中会报错,如果我们想要解决上述问题,这里提供两种解决方案供大家参考:
(1)Method1:
可以写成&group. =1 or &group. =2,但当选择条件过多时使用or可能会比较繁琐,因此对于条件过多时不推荐使用,示例如下所示。
(2)Method2:
如果我们想要开启SAS宏解析器对in运算符的支持,我们可以用option语句在SAS会话中适时开启,比较方便,推荐使用,示例如下所示。
如果我们只想在当前宏程序模块下运用此运算符,只需要在宏程序参数中加上MINOPERATOR选项,示例如下所示。
全部0条评论
快来发表一下你的评论吧 !