data clasdata ;
input id name $ class $ ;
datalines;
4567 Denise ENGL201
4567 Denise ENGL201
1234 Lynn CHEM101
1234 Lynn CHEM101
1234 Lynn MATH102
5678 Rick CHEM101
5678 Rick HIST300
5678 Rick HIST300
3456 Amber CHEM101
3456 Amber Math102
3456 Amber Math102
2345 Ginny CHEM101
2345 Ginny ENGL201
2345 Ginny MATH102
;
proc sort ;
by name class ;
run;
data dups nodups ;
set clasdata ;
by name class ;
if first.class and last.class then output nodups ; /*FIRST.CLASS和LAST.CLASS同时为1的时候就输出*/
else output dups ;
run;
proc print data=dups;
title 'RESULTS of DUPS data set';
run;
proc print data=nodups;
title 'RESULTS of NODUPS data set';
run;
注意:我们知道,如果有重复观测对象出现,那么FIRST.CLASS应该是1 0 0 0 0 1(下一组的开始),那么LAST.CLASS则是0 0 0 0 1 0(下一组的开始)
如果没有重复观测对象的话,那么FIRST.CLASS为1 1(下一组开始) LAST.CLASS为1 0(下一组开始) 所以同时为1,确定了唯一性。