在SAS 9中,我如何在简单的数据步骤中重新排列字段的顺序。
Data set2;
/*Something probably goes here*/
set set1;
run;
因此,如果set1具有以下字段:
Name Title Salary
A Chief 40000
B Chief 45000
然后我可以将set2的字段顺序更改为:
Title Salary Name
Chief 40000 A
Chief 45000 B
谢谢,
丹
答案 0 :(得分:9)
一些快速的谷歌搜索给了我这个方法:
data set2;
retain title salary name;
set set1;
run;
答案 1 :(得分:5)
如果数据集中有大量变量,有时使用sql语句而不是datastep会更容易。这允许您仅列出您关注其顺序的变量,并使用通配符保留其他所有内容。
proc sql noprint;
create table set2 as
select title, salary, *
from set1;
quit;
如果您使用大型表执行此操作,则可以通过创建视图来节省IO开销。这可以应用于数据集方法或proc sql方法。
proc sql noprint;
create view set2 as
select title, *
from set1;
quit;
** OR;
data set2 / view=set2;
retain title salary name;
set set1;
run;
干杯 罗布
答案 2 :(得分:3)
您还可以使用informat语句执行此操作 - 无需指定任何信息。我怀疑这比等效的retain语句稍微有效,因为它允许SAS初始化值而不是从前一行检索它们。在实践中,差异很小,您还可以选择使用视图。
data set2;
informat title salary name;
set set1;
run;
在informat语句中指定的变量将移动到数据集的左侧并按顺序移动,其余的将保留在输入数据集中。
答案 3 :(得分:1)
您可以使用任何使用变量按所需顺序初始化PDV的东西( ATTRIB , ARRAY , FORMAT , INFORMAT ,长度,保持)。
来源:本SAS注释:http://support.sas.com/kb/8/395.html