最近Reveiw他人代码的过程中,遇到了Quote函数的应用,我眼前一亮。这个函数我从未使用过,它的延伸应用确实可以提高编程的效率。
Quote函数的的功能非常简单,向字符值添加双引号(Adds double quotation marks to a character value)。可以参考示例代码进行理解:
data class;
set sashelp.class;
name2 = quote(strip(name));
run;
结果如下:
Output 1
查看输出结果,大家都应该觉得这个函数如此简单,究竟能有什么妙用呢?我们可以使用Quote函数来构建IN判断语句的条件范围。具体来讲,就是对每一个具体的条件选项使用Quote函数,并将其保存在宏变量中,便于后续IN判断语句的调用。参考示例代码进行理解:
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;
宏变量的输出结果如下:
Output 2
输出数据集Class2如下:
Output 3
按照特定的条件选出name值内容,并加上引号保存到宏变量中,方便后续程序得应用。在这个举例中,有人会觉得我直接在应用if sex = "F" then sex2 = "Female"
不更方便快捷吗?没错,在上面的例子中确实这样做更方便,因为示例数据集中本身就含有实现目标条件的变量。但如果目标条件在其它一个或多个数据集中,这样把目标条件范围先整合到宏变量中,最后进行进一步引用就便利简洁很多了。
以上。
若有疑问,欢迎评论区交流!
网友评论