Как получить повторяющиеся значения из SAS? - PullRequest
0 голосов
/ 23 сентября 2018

Для данных, которые имеют следующую переменную: Student_ID, Start_week, Sy, Item, Type, School, Tuition и Country.Если наблюдение имеет одинаковую комбинацию (Student_Id, Start_week, Sy, Item, Type и School), это дублирующее наблюдение.

Например:

Student_ID Start_week Sy Item Type School
10001           1     11  101   0    2
10001           1     11  101   0    2

Два наблюдения являются дубликатами, поскольку они имеют одинаковое значение для комбинации.То, что я делал, было:

proc freq data = mydataset;
 by Student_ID;
 tables Start_week Sy Item Type School;
run;

Однако это не помогло мне увидеть, что является дубликатами, а что нет.Я хотел создать переменную count для подсчета дубликатов, но она не захватила комбинацию, а только Student_ID.Более того, при использовании proc freq не хватало памяти.

Каковы эффективные способы выявления дублирующихся значений?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

PROC SORT имеет относительно новую опцию под названием NOUNIQUEKEY, которая удаляет все уникальные записи на основе ключевых переменных.

data h;
 input name $ age h;
 datalines;
 kir 1 1
 kir 1 2
 nir 1 3
    ;

 proc sort data=h nouniquekey out=duplicates;
 by  name age;
 run;
0 голосов
/ 23 сентября 2018

Один из способов найти дубликаты - это sql или метод сортировки для всех переменных

data h;
input name $ age ;
datalines;
kir 1 
kir 1
nir 1
;

proc sql;
select * from h
group by name, age
having count(*) gt 1;

proc sort data=h nodup dupout = new;
by _all_;
run;

, если меньше переменных (не все переменные), используйте nodupkey, а ниже приведен код, если вы не используете все переменные

 data h;
 input name $ age h;
 datalines;
 kir 1 1
 kir 1 2
 nir 1 3
    ;

 proc sql;
 select name, age from h
 group by name, age
 having count(*) gt 1;

 proc sort data=h nodupkey dupout = new(keep=name age);
 by  name age;
   run;
...