The code below shows you how to find unique and duplicate values in a dataset and get them seperated into two different datasets.
The variables you want to examin for uniqueness has to be in the by-statement and each have an not(first.<variable> and last.variable). Be aware that in SAS 9.3 there is an easier solution using proc sort.
data unique dups;
set sashelp.class;
by Age Height Name Weight;
if not(first.Age and last.Age)
and not(first.Height and last.Height)
and not(first.Name and last.Name)
and not(first.weight and last.Weight) then output dups;
else output unique;
run;
This code is different than using proc sort prior to SAS 9.3
proc sort data=sashelp.class nodupkey out=unique dupout=dups;
by Age Height Name Weight;
run;
The code above will take the first of the dublicates and put it into the unique-dataset. It will not completely seperate unique and duplicate rows from each other.
In SAS 9.3 proc sort has a new parameter uniqueout. This can be used to do the trick of the datastep much easier. I haven’t tried it, but I imagine that this is how it works.
proc sort data=sashelp.class nouniquekeys uniqueout=singles out=dublet;
by Age Height Name Weight;
run;