第一种方法:利用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;