PROC SQL删除重复的观察对?

时间:2014-01-30 21:35:09

标签: sas duplicate-removal proc-sql

enter image description here我需要删除具有重复对的观察结果(即原始观察结果并且它是重复的)。我有超过一百列,但有时对于给定的ID我得到一对不同的Load_Date和一对接触器列。 下面的代码我用来删除所有情况,如上所述我有重复对enter image description here

如果我以正确的方式做到这一点,你能告诉我吗?根据描述的数据,我需要保留ID值C和D的记录。我确实检查了我的输出,看起来它工作,仍然不确定,因为我是proc sql的新手。谢谢!

2 个答案:

答案 0 :(得分:3)

SAS解决方案,假设您只想删除重复ID的记录。

proc sort data=have;
by ID;
run;

data want;
set have;
by ID;
if first.ID and last.ID;
run;

这将删除ID相同的记录。如果VAR1和VAR2也相关,您也可以将它们添加到排序中; FIRSTLAST应该是by语句中最右边的变量。

答案 1 :(得分:1)

一个proc SQL解决方案。相同的输出,但只有一步,没有明确的排序。

proc sql; 
    create table WANT as
    SELECT *
    FROM have
    GROUP BY ID
    /* Put your criteria here, can use any COUNT DISTINCT*/
    HAVING COUNT(*)=1
;quit;