SAS:在数据步骤中重新排列字段顺序

时间:2010-04-19 20:33:37

标签: sas

在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

谢谢,

4 个答案:

答案 0 :(得分:9)

一些快速的谷歌搜索给了我这个方法:

data set2;
  retain title salary name;
  set set1;
  run;

从这里: http://analytics.ncsu.edu/sesug/2002/PS12.pdf

答案 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