SAS:删除已出现值的行
我有一个包含两列ID的数据集,ID_a和ID_B。每行包含两个我认为属于同一个人的ID。因此,每个组合显示两次。例如: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_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;