Sas PROC SQL是否删除重复的观察结果对?

Sas PROC SQL是否删除重复的观察结果对?,sas,duplicate-removal,proc-sql,Sas,Duplicate Removal,Proc Sql,我需要删除具有重复对的观测值(即原始观测值和它的重复)。我有100多列,但有时对于给定的ID,我会得到一对不同的加载日期和一对接触器列。 下面的代码用于在我具有如上所述的重复对时删除所有案例: 你能告诉我我做得对吗?根据所描述的数据,我只需要保留ID值C和D的记录。我确实检查了我的输出,它看起来很有效,但仍然不确定,因为我对proc-sql还不熟悉。谢谢 SAS解决方案,假设您只想删除重复ID的记录 proc sort data=have; by ID; run; data want; set

我需要删除具有重复对的观测值(即原始观测值和它的重复)。我有100多列,但有时对于给定的ID,我会得到一对不同的加载日期和一对接触器列。 下面的代码用于在我具有如上所述的重复对时删除所有案例:


你能告诉我我做得对吗?根据所描述的数据,我只需要保留ID值C和D的记录。我确实检查了我的输出,它看起来很有效,但仍然不确定,因为我对proc-sql还不熟悉。谢谢

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也相关,您也可以将它们添加到排序中;
FIRST
LAST
应该是
by
语句中最右边的变量。

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也相关,您也可以将它们添加到排序中;
FIRST
LAST
应该是
by
语句中最右边的变量。

和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;

和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;

您想完全删除重复项,还是保留其中一个?我想完全删除重复项,但这里我们不只是讨论保留其中一个重复项。我想删除一对具有重复项和原始项的观测值。有什么特别的原因要使用PROC SQL吗?只是觉得这样更容易。但是如果您能提供更好的方法,我将不胜感激。另外,对于非sas SQL人员,sas将允许选择非分组字段(不同于许多实现);它将使用这些字段执行GROUP BY,然后连接回原始数据(因此返回的行可能比
GROUP BY
要多)。您想完全删除重复的行,还是保留其中的一个?我想完全删除重复的行,但这里我们不只是讨论保留一个重复的行。我想删除一对具有重复项和原始项的观测值。有什么特别的原因要使用PROC SQL吗?只是觉得这样更容易。但是如果您能提供更好的方法,我将不胜感激。另外,对于非sas SQL人员,sas将允许选择非分组字段(不同于许多实现);它将使用这些字段执行GROUP BY,然后连接回原始数据(因此可能会返回比GROUP BY更多的行)。不幸的是,此代码没有将ID的C和D作为输出。省略了
BY
语句,抱歉-请立即尝试。不幸的是,此代码没有将ID的C和D作为输出提供给我。被语句遗漏了
,抱歉-请立即尝试。