前面通過對(duì)SAS Base的學(xué)習(xí),我想大家對(duì)in運(yùn)算符并不陌生,它廣泛的應(yīng)用于數(shù)據(jù)步或SQL條件語句中,進(jìn)行條件判斷或數(shù)據(jù)篩選,進(jìn)而訪問特定觀測值。
但是在SAS中編寫宏語句時(shí),試圖使用in運(yùn)算符時(shí)log會(huì)報(bào)錯(cuò),這是因?yàn)樵谀J(rèn)情況下,SAS宏解析器沒有開啟對(duì)in運(yùn)算符的支持,而把in僅僅當(dāng)成常規(guī)字符來處理,而不是運(yùn)算符。那么如何在宏語句中正確使用in運(yùn)算符呢,今天小編帶你一一梳理,如果你是SAS基礎(chǔ)小白,請(qǐng)不要錯(cuò)過這篇推文噢
測試數(shù)據(jù)集
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結(jié)果如下
test2結(jié)果如下
例2:在proc sql中使用IN語句
proc sql noprint;
create table test3 as
select*
from test
where name in ("Jane" "John");
quit;
結(jié)果如下:
例3:在宏語句中使用IN語句
結(jié)果如下:
可以看到當(dāng)我們?cè)诤暾Z句中使用in運(yùn)算符時(shí)在日志中會(huì)報(bào)錯(cuò),如果我們想要解決上述問題,這里提供兩種解決方案供大家參考:
(1)Method1:
可以寫成&group. =1 or &group. =2,但當(dāng)選擇條件過多時(shí)使用or可能會(huì)比較繁瑣,因此對(duì)于條件過多時(shí)不推薦使用,示例如下所示。
(2)Method2:
如果我們想要開啟SAS宏解析器對(duì)in運(yùn)算符的支持,我們可以用option語句在SAS會(huì)話中適時(shí)開啟,比較方便,推薦使用,示例如下所示。
如果我們只想在當(dāng)前宏程序模塊下運(yùn)用此運(yùn)算符,只需要在宏程序參數(shù)中加上MINOPERATOR選項(xiàng),示例如下所示。
-
SQL
+關(guān)注
關(guān)注
1文章
750瀏覽量
43900 -
SAS
+關(guān)注
關(guān)注
2文章
517瀏覽量
32770 -
運(yùn)算符
+關(guān)注
關(guān)注
0文章
166瀏覽量
11013
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論