最近Reveiw他人代碼的過程中秉馏,遇到了Quote函數(shù)的應(yīng)用,我眼前一亮朋蔫。這個函數(shù)我從未使用過,它的延伸應(yīng)用確實可以提高編程的效率却汉。
Quote函數(shù)的的功能非常簡單驯妄,向字符值添加雙引號(Adds double quotation marks to a character value)『仙埃可以參考示例代碼進行理解:
data class;
set sashelp.class;
name2 = quote(strip(name));
run;
結(jié)果如下:
查看輸出結(jié)果青扔,大家都應(yīng)該覺得這個函數(shù)如此簡單,究竟能有什么妙用呢?我們可以使用Quote函數(shù)來構(gòu)建IN判斷語句的條件范圍微猖。具體來講谈息,就是對每一個具體的條件選項使用Quote函數(shù),并將其保存在宏變量中凛剥,便于后續(xù)IN判斷語句的調(diào)用侠仇。參考示例代碼進行理解:
proc sql noprint;
select quote(strip(name)) into : name_F separated by ", "
from sashelp.class
where sex="F";
quit;
%put &name_F;
data class2;
set sashelp.class;
if name in (&name_F.) then sex2 = "Female";
run;
宏變量的輸出結(jié)果如下:
輸出數(shù)據(jù)集Class2如下:
按照特定的條件選出name值內(nèi)容,并加上引號保存到宏變量中犁珠,方便后續(xù)程序得應(yīng)用逻炊。在這個舉例中,有人會覺得我直接在應(yīng)用if sex = "F" then sex2 = "Female"
不更方便快捷嗎盲憎?沒錯嗅骄,在上面的例子中確實這樣做更方便,因為示例數(shù)據(jù)集中本身就含有實現(xiàn)目標(biāo)條件的變量饼疙。但如果目標(biāo)條件在其它一個或多個數(shù)據(jù)集中溺森,這樣把目標(biāo)條件范圍先整合到宏變量中,最后進行進一步引用就便利簡潔很多了窑眯。
以上屏积。
若有疑問,歡迎評論區(qū)交流磅甩!