SAS: изменить порядок полей в шаге данных - PullRequest
8 голосов
/ 20 апреля 2010

Как в простом шаге данных в 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 ]

9 голосов
/ 20 апреля 2010

Какой-то быстрый поиск в Google дал мне этот метод:

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

отсюда: http://analytics.ncsu.edu/sesug/2002/PS12.pdf

5 голосов
/ 20 апреля 2010

Если в вашем наборе данных очень много переменных, иногда проще использовать оператор SQL вместо шага данных.Это позволяет вам перечислять только те переменные, порядок которых вас интересует, и использовать подстановочный знак для сохранения всего остального.

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;

Cheers Rob

3 голосов
/ 04 марта 2012

Для этого вы также можете использовать оператор informat - указывать информаты не нужно. Я подозреваю, что это немного более эффективно, чем эквивалентный оператор retain, поскольку он позволяет SAS инициализировать значения как пропущенные, а не извлекать их из предыдущей строки. На практике разница минимальна, и у вас также есть возможность использовать представление.

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

Переменные, указанные в операторе informat, перемещаются слева от набора данных и в этом порядке, а остальные остаются такими же, как во входном наборе данных.

1 голос
/ 02 декабря 2018

Вы можете использовать все, что инициализирует PDV с переменными в нужном вам порядке ( ATTRIB , ARRAY , FORMAT , INFORMAT, ДЛИНА , RETAIN ).

Источник: примечание SAS: http://support.sas.com/kb/8/395.html

...