【问题背景】
在实际工作中,经常面临自定义数据集变量次序的问题。当处理的变量较多时,就算手工在EXCEL里通过VLOOKUP排序处理也是比较耗时的。
【解决方法】
除了引用Crackman给出的两种方法(http://crackman.net/?p=1044)外,另附两种我平时常用的解决办法,总有四种方法可参考。
方法1:
在SET语句之前,用LENGTH语句可以重新声明变量在PDV中的顺序
data crackman;
length Name $ 6 Age 8 Sex $ 2 Weight Height 8;
set sashelp.class;
run;
方法2:
利用retain语句重置变量顺序
data crackman1;
retain Name Age Sex Weight Height;
set sashelp.class;
run;
方法3:
利用SQL语句重置变量顺序
proc sql;
create table crackman1 as
select Name,Age,Sex,Weight,Height
from sashelp.class
;
quit;
方法4:
将排序完毕的变量存储在一数据集中,通过调用宏变量在retain或SQL语句中重置变量顺序
data varorder;
input varname $10.;
cards;
Name
Age
Sex
Weight
Height
;
run;
proc sql noprint;
select distinct varname into :nmlist1 separated by " " from varorder
;
select distinct varname into :nmlist2 separated by "," from varorder
;
quit;
data crackman1;
retain &nmlist1.;
set sashelp.class;
run;
proc sql;
create table crackman2 as
select &nmlist2
from sashelp.class
;
quit;
如各位朋友有其他方法,可在回帖中附上,以便大家共享。