SAS运算符in在宏语句中的应用

电子说

1.3w人已加入

描述

前面通过对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结果如下

SAS

test2结果如下

SAS

例2:在proc sql中使用IN语句

proc sql noprint;

create table test3 as

        select*

  from test

        where name in ("Jane" "John");

quit;

结果如下:

SAS

例3:在宏语句中使用IN语句

SAS

结果如下:

SAS

可以看到当我们在宏语句中使用in运算符时在日志中会报错,如果我们想要解决上述问题,这里提供两种解决方案供大家参考:

(1)Method1:

可以写成&group. =1 or &group. =2,但当选择条件过多时使用or可能会比较繁琐,因此对于条件过多时不推荐使用,示例如下所示。

SAS

(2)Method2:

如果我们想要开启SAS宏解析器对in运算符的支持,我们可以用option语句在SAS会话中适时开启,比较方便,推荐使用,示例如下所示。

SAS

如果我们只想在当前宏程序模块下运用此运算符,只需要在宏程序参数中加上MINOPERATOR选项,示例如下所示。

SAS

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分