登录
首页精彩阅读SAS数据集中重复数据的处理方法
SAS数据集中重复数据的处理方法
2017-06-01
收藏

SAS数据集中重复数据的处理方法

  在使用SAS在处理数据的时候,经常会遇到或产生一些重复数据,有些重复数据是我们需要的,而有的则是多余的。下面讲到的内容就是筛选/排除某一数据集里重复数据以及去重的几种常用方法。

测试数据如下:

TARGET 1: 保留不重复数据/保留重复数据

方法1:DATA STEP

/*根据ID排序*/

proc sort data=ID;

by ID;

run;

/*保留不重复ID*/

dataID_1;

setID;

byID;

if first.ID = last.ID =1;

run;

/*保留重复ID*/

dataID_2;

setID;

byID;

if ^(first.ID = last.ID =1) ;

run;

方法2:PROC SQL

/*保留唯一的ID*/

proc sql;

create tableid_3as 

selecta.*fromID a,

(selectID,count(1)asID_cntfromID

group byID

having  ID_cnt=1) b 

wherea.ID=b.ID;

quit;

/*保留非唯一的ID*/

proc sql;

create tableid_4as 

selecta.*fromID a,

(selectID,count(1)asID_cntfromID

group byID

having  ID_cnt>1) b 

wherea.ID=b.ID;

quit;

方法3:PROC FREQ

/*保留唯一的ID*/

proc freqdata=IDnoprint;

tableID /out=id_5 (keep = ID Count where = (Count = 1)) ;

run;

/*保留非唯一的ID*/

proc freqdata =IDnoprint;

tableID /out=id_6 (keep = ID Count where = (Count > 1)) ;

run;

TARGET 2: 数据集去重

方法1:PROC SORT

/*根据ID去重*/

proc sortdata=IDnodupkey out=ex1; 

byID ; 

run;

注:此处使用nodup与nodupkey会产生相同结果,但实际应用中它们存在一定差异,其主要区别在于:

NODUPKEY去除关键字 by ID相同的数据

NODUP去除observation完全相同的记录,但是相同的记录必须相邻

方法2:PROC SQL

/*根据ID去重*/

proc sql; 

create tableex2as 

select distinctIDfromID; 

quit;

方法3:DATA STEP

/*根据ID排序*/

proc sort data=ID;

by ID;

run;

/*根据ID去重*/

dataex3; 

setID; 

byID; 

iffirst.IDthen outputex3; 

run;


SQL

数据分析咨询请扫描二维码

客服在线
立即咨询