1、 if语句创造子数据集,if语句存在的位置与sas的内存有关,显然if语句放在前面减少sas内存。If判断语句放在前面,直接选取了符合我们的数据,另外部分不用进入计算,所以会优化我们的程序。
2、 if/else与select语句
(1) 对于字符变量,if/else比select语句更高效。
(2) 一般select语句的数据值是分布式的(我理解是类似离散型的数据)
(3) 也可以把do循环放到if/else与select语句中
3、 排除不必要的传递
(1) 使用一个数据步创造多个数据集
(2) 使用datasets步去修改变量属性。(只能修改变量属性,而不能该变量值)
(3) 使用含有where语句的sort过程去创造排序的子集
4.where与if判断的区别
if语句把全部数据加载到pdv里面,而where只选取了符合我们要求的数据,所以显然where比if优化,高效。
4、 keep与drop的使用
当keep=、drop=使用在set、merge后面,pdv里面只生成我们需要的变量。而drop、keep使用在数据步里面,效果一样。
5、避免不必要的程序调用
用一个过程完成多个任务(例如 procsql/proc datasets等)
仅供大家参考,有些地方自己翻译、理解的不全面,详细请参考 sas advance。欢迎大家批评指正。