在编码处理阶段执行顺序是where、keep/drop、rename;
不论语句的顺序怎样,执行顺序不变。只要语句内容相同,执行的最终结果是一样的。
Data class;
set sashelp.class;
rename name=name1;
keep name sex;
where name="Jane";
run;
proc print data=class;
run;
Data class;
Set sashelp.class;
Where name=”Jane”;
Keep name sex;
Rename name=name1;
Drop name sex;/*keep和drop两个不能同时使用*/
在读入和输出数据集阶段的执行顺序是keep/drop、rename、where;
Data test;
set sashelp.class(keep=Name Sex where=(Name1="Jane") rename=(Name=Name1));
run;
Data test1(keep=Name Sex rename=(Name=Name1) where=(Name1="Jane"));
set sashelp.class;
run;
对于keep和drop而言,作为set语句的数据集选项时是即时起作用的,而作为语句是延迟起作用的;对于where而言,作为语句和选项都是一样的,都是即时起作用。