对于具有以下变量的数据: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,它已耗尽内存。
识别重复值的有效方法有哪些?
答案 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;