SAS:删除已出现值的行

SAS:删除已出现值的行,sas,Sas,我有一个包含两列ID的数据集,ID_a和ID_B。每行包含两个我认为属于同一个人的ID。因此,每个组合显示两次。例如: ID_A ID_B A B C D B A D C 我想要的是消除重复。也就是说,如果我有A,B行,我不需要B,A行 ID_A ID_B A B C D 知道如何在SAS中执行此操作吗?这个如何 data have; input (ID_A ID_B)($); cards; A B C

我有一个包含两列ID的数据集,ID_a和ID_B。每行包含两个我认为属于同一个人的ID。因此,每个组合显示两次。例如:

ID_A   ID_B
A      B
C      D
B      A
D      C
我想要的是消除重复。也就是说,如果我有A,B行,我不需要B,A行

ID_A   ID_B
A      B
C      D
知道如何在SAS中执行此操作吗?

这个如何

data have;
   input (ID_A ID_B)($);
   cards;
A      B
C      D
B      A
D      C
;;;;
   run;
data haveV / view=haveV;
   set have;
   call sortc(of id:);
   run;
proc sort nodupkey out=want;
   by id:;
   run;
proc print;
   run;
这个怎么样

data have;
   input (ID_A ID_B)($);
   cards;
A      B
C      D
B      A
D      C
;;;;
   run;
data haveV / view=haveV;
   set have;
   call sortc(of id:);
   run;
proc sort nodupkey out=want;
   by id:;
   run;
proc print;
   run;
我喜欢@data-null-answer,它完美而健壮。您还可以尝试proc sql,如下所示

    proc sql;
    create table want as 
    select distinct
    case when ID_A le ID_B then ID_A else ID_B end as ID_A,
    case when ID_A ge ID_B then ID_A else ID_B end as ID_B
    from have;
我喜欢@data-null-answer,它完美而健壮。您还可以尝试proc sql,如下所示

    proc sql;
    create table want as 
    select distinct
    case when ID_A le ID_B then ID_A else ID_B end as ID_A,
    case when ID_A ge ID_B then ID_A else ID_B end as ID_B
    from have;