第一种方法:利用sort过程步的dupout和nodupkey,原始的test数据集将输出为unique和dups两个数据集。

proc sort data = test out=_unique dupout = _dups nodupkey ; 
    by var;
    run ; 

第二种方法:在数据步中利用by和first.var and Last.var。注意:此dups和上面的dups得到的结果并不相同,实际操作就知道差异在哪里。

proc sort data = test; 
    by var; 
    run; 
    data _dups ; 
    set test;
    by var;
    if not (first.var and Last.var) then output ; 
    run; 

第三种方法:利用SQL过程步的having count(),设置条件为>1即可输出重复值;如果要输出没有重复值的,当然是having count()=1;此方法得到的_dups与第二种方法相同。

proc sql;
    create table _dups as select * from test group by var having count(*)> 1 order by var; 
    quit;