以sashelp中的cars数据集为例,如果我们需要按照origin字段将数据分别导出到origin_asia,origin_europe,origin_usa三个数据集,我们采用以下代码:
data _null_;
set sashelp.cars;
call execute('data origin_'‖origin‖'; set sashelp.cars(where = (origin = "'‖origin‖'")); run;');
run;
该方法比较灵活,不需要知道origin字段有哪些值,可以直接将数据导入到对应的数据集,但同时也有效率低的问题。cars数据集有428条观测,所以call execute语句会执行428次。因为origin有3个取值,所以有425次都是在重复执行。下面我们采用first.语句进行优化,仅在origin值首次出现时执行call execut