SAS удаляет дубликаты на основе всех, кроме одной переменной / столбца - PullRequest
0 голосов
/ 24 января 2019

В SAS есть способ удаления дубликатов на основе всех столбцов, кроме одного?

Насколько мне известно, ниже приведено удаление дубликатов на основе всех столбцов

proc sort data=xyz_01 nodupkey out=xyz_02;
by _all_;
run;

Поскольку во входной таблице много столбцов, мне нужно перечислить все столбцы в операторе by?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Один из способов сделать это - использовать macrovariable

   proc sql noprint;
     select name into :cols separated by " "
     from Dictionary.columns
      where upcase(MEMNAME)= "CLASS"
     and upcase(libname) ="SASHELP"  
     and upcase(name) ne "AGE";

попробуйте% put и посмотрите в журнале, что вы хотите, чтобы ваши столбцы были упорядочены.

 %put &cols;

   proc sort data=sashelp.class nodupkey out=class;
        by &cols;
    run;

или просто перечислите переменные, как показано ниже

   proc sort data=sashelp.class nodupkey out=class;
     by name sex height weight;
    run;
0 голосов
/ 24 января 2019

Вы можете использовать опцию Nodup или noduprecs.укажите свой первичный ключ в заявлении.Пример: Proc sort data=<dataset> out=<out> noduprecs; by <variable>; run;

или Proc sort data=<dataset> out=<out> nodup; by <variable>; run;

...