Ваш пример проверки кода на наличие дубликатов возвращает набор данных, содержащий все записи, в которых ключ НЕ является уникальным.Таким образом, ниже приведены четыре записи:
data bigtable;
input a b c d;
datalines;
1 1 1 1
1 1 1 1
1 2 1 1
1 2 2 1
1 2 2 2
;
run;
proc sql;
create table checkDupe1 as
select *,count(*) as N
from bigTable
group by 1, 2, 3
having N > 1;
quit;
Предполагая, что вам не нужен столбец N
, в SAS проще всего получить набор данных из всех неуникальных строк, используя PROC SORT
сопция NOUNIQUEKEY
.Поэтому ниже будут возвращены те же четыре записи:
proc sort data=bigtable out=checkDupe2 nouniquekey ;
by a b c ;
run ;
И оператор BY
может быть BY _ALL_
, который будет возвращать две записи, которые являются дубликатами для всех переменных:
proc sort data=bigtable out=checkDupe3 nouniquekey ;
by _all_ ;
run ;