The SAS-macro below will tell you if a variable in a dataset is unique.
/********************************************************************************
Author :
Creation date : ddmmmyyy
Description : Gets info about uniqness in a SAS-dataset.
Example : %uniq(sashelp.class, name, print)
*********************************************************************************
Input
-----
&datset : The dataset to test.
&variable : The variable to test for uniqueness.
&print : If the output/result should be shown in a PROC PRINT.
*********************************************************************************
Output
------
freq_result : Dataset sorted with doublets as first rows.
freq_result_doublets : Data containing only the doublets.
********************************************************************************/
%macro uniq(dataset, variable, print);
proc freq data=&dataset.;
tables &variable / noprint out=freq_result;
run;
proc sort data=freq_result;
by descending count;
run;
data freq_result_doublets;
set freq_result;
where count gt 1;
run;
proc sql noprint;
select count(*) into :doublets
from freq_result_doublets
where count gt 1
;
quit;
%put --------------------------------------------------------------------------------------------;
%put NUMBER OF DOUBLETS IN [%upcase(&dataset.)] FOR VARIABLE [%upcase(&variable.)]: &doublets.;
%put --------------------------------------------------------------------------------------------;
%if &doublets. eq 0 %then
%do;
%put !!!! NO DOUBLETS !!!;
%put --------------------------------------------------------------------------------------------;
%end;
%if &print. ne %then
%do;
proc print data=freq_result;
run;
%end;
%mend;