设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1709|回复: 0

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

[复制链接]

11

主题

106

金钱

171

积分

入门用户

发表于 2019-8-21 16:38:06 | 显示全部楼层 |阅读模式

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

测试数据如下:
1.png
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.png
方法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.png
方法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;



4.png
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;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表