在SAS中,有一种方法可以基于除一列以外的所有列删除重复项?
据我所知,以下内容是根据所有列删除重复项
proc sort data=xyz_01 nodupkey out=xyz_02;
by _all_;
run;
由于输入表中有很多列,我必须列出by语句中的所有列吗?
答案 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;