首页 > 解决方案 > 删除 A || 的重复项 B 等于 B || 一个

问题描述

假设我有一个包含五个观察值和两列的数据集。

A       B
Orange  Banana
Plum    Apple
Banana  Orange
Plum    Grape
Grape   Apple

我想删除 A || 所在的重复行 B 等于 B || A,即删除观察 A = Banana 和 B = Orange,因为在数据集中之前存在 A = Orange 和 B = Banana 的观察。

标签: sasduplicates

解决方案


您可以对一行中的值进行排序,以便观察 A = Banana 和 B = Orange 以及观察 A = Orange 和 B = Banana 变为 A = Banana 和 B = Orange。

下面使用 CALL SORTC 对它们进行排序。假设您不想丢失原始变量,它使用视图创建已排序变量的新副本。一旦你把它排序,你可以以任何你想要的方式去重复。

data have ;
  input a $8. b $8. ;
  cards ;
Orange  Banana
Plum    Apple
Banana  Orange
Plum    Grape
Grape   Apple
;


data myview/view=myview ;
  set have ;
  mya=a ;
  myb=b ;
  call sortc(mya,myb) ;
run ;


proc sort nodupkey data=myview out=want(drop=mya myb) ;
  by mya myb ;
run ;

推荐阅读