加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2017-06-02 14:09:48)
标签:

sas

大数据分析

数据分析师

数据挖掘

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

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

测试数据如下:

http://www.cda.cn/uploadfile/image/20170601/20170601070147_56474.png

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

方法1:DATA STEP

 

proc sort data=ID;

by ID;

run;

 

dataID_1;

setID;

byID;

if first.ID = last.ID =1;

run;

 

dataID_2;

setID;

byID;

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

run;

http://www.cda.cn/uploadfile/image/20170601/20170601070115_85030.png

方法2:PROC SQL

 

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;

 

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;

http://www.cda.cn/uploadfile/image/20170601/20170601070049_58461.png

方法3:PROC FREQ

 

proc freqdata=IDnoprint;

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

run;

 

proc freqdata =IDnoprint;

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

run;

http://www.cda.cn/uploadfile/image/20170601/20170601070021_63761.png

TARGET 2: 数据集去重

方法1:PROC SORT

 

proc sortdata=IDnodupkey out=ex1; 

byID ; 

run;

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

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

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

方法2:PROC SQL

 

proc sql; 

create tableex2as 

select distinctIDfromID; 

quit;

方法3:DATA STEP

 

proc sort data=ID;

by ID;

run;

 

dataex3; 

setID; 

byID; 

iffirst.IDthen outputex3; 

run;


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有