SAS根据除一个变量/列之外的所有变量删除重复项

时间:2019-01-24 07:53:57

标签: sas duplicates

在SAS中,有一种方法可以基于除一列以外的所有列删除重复项?

据我所知,以下内容是根据所有列删除重复项

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

由于输入表中有很多列,我必须列出by语句中的所有列吗?

2 个答案:

答案 0 :(得分:0)

您可以使用Nodup或noduprecs选项。在声明中提及您的主键。 例如: Proc sort data=<dataset> out=<out> noduprecs; by <variable>; run;

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

答案 1 :(得分:0)

一种方法是使用宏变量

   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;