sas调整数据集变量顺序,更改列顺序,更改列的排列。
Python和R在进行变量顺序修改时特别方便,但是sas的keep并不支持变量顺序修改,只能用retain来进行修改,而且修改使用的方法是将所有的变量名重新排列一遍。
如果变量特别多会非常麻烦,利用宏变量其实是程序拼接的思想,试用宏变量来实现。
以下代码实现了将num1和num2排列到一起,更加复杂的排列可以参考此方法。
varnum是变量顺序。
data a;
input name $ id sex $ num1 var1 $ num2 var2 $ var3 var4 $;
cards;
a 1 m 3 x 5 y 7 z
;
run;
proc print;
run;
proc sql;
create table vars as
select varnum,name
from dictionary.columns
where memname='A';
quit;
data vars;
set vars;
if name='num2' then varnum=4.1;
run;
proc sql ;
select name into :a_vars separated by' '
from vars
order by varnum;
quit;
%put &a_vars.;
data a;
retain &a_vars.;
set a;
run;
proc print ;
run;
这里使用了 dictionary.columns数据集,以下截图为 dictionary.columns数据集中的值,
其中有变量名和变量名的label,所以有时候我们想把变量名改成label值,也可以参考这种拼接方式。
获取变量名的另外一个方法:
data vars1;
set sashelp.vcolumn;
where memname='A';
keep varnum name;
run;