我试图只保留表中一列的重复结果.这就是我所拥有的.
proc sql;
create table DUPLICATES as
select Address, count(*) as count
from TEST_TABLE
group by Address
having COUNT gt 1
;
quit;
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法来做这个或我没想到的替代方案?看起来很狡猾,然后我必须重新加入原始表格以获得我的答案.
proc sort data=TEST_TABLE;
by Address;
run;
data DUPLICATES;
set TEST_TABLE;
by Address;
if not (first.Address and last.Address) then output;
run;
Run Code Online (Sandbox Code Playgroud)
使用proc sort与nodupkey和dupout将重复数据删除并为您提供一个"out"数据集,其中包含来自原始数据集的重复记录,但"out"数据集不包含带有ID变量的每条记录 - 它为您提供第2个,第3个,第4 ...... Nth.因此,在使用此方法时,不要比较ID变量的所有重复出现次数.当您知道要删除的内容并通过变量进行足够的定义以精确限制此内容时,或者如果您知道具有重复ID的记录在各方面都相同并且您只是希望将其删除时,那就太棒了.
当我收到的原始文件中有重复项时,我喜欢比较ID多次出现的所有记录.
proc sort data=test nouniquekeys
uniqueout=singles
out=dups;
by=ID;
run;
Run Code Online (Sandbox Code Playgroud)
同样,这种方法非常适合处理凌乱的原始数据,并且如果您的代码可能产生了重复数据,则可以进行调试.
使用数据步骤很容易:
proc sort data=TEST_TABLE nodupkey dupout=dups;
by Address;
run;
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅此文档