如何从SAS获取重复值?

时间:2018-09-22 21:38:33

标签: sas

对于具有以下变量的数据: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 :(得分:0)

查找重复项的一种方法是对所有变量进行sql或proc排序

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;

答案 1 :(得分:0)

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;