SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: shiyiming
打印 上一主题 下一主题

请教:利用nodupkey可以去重复数据,但有没有简单办法把重复数据挑出来

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
11#
 楼主| 发表于 2012-12-7 11:14:00 | 只看该作者

Re: 请教:利用nodupkey可以去重复数据,但有没有简单办法把重复数据挑出来

支用将表读入hash中,然后调用find函数,输出,效率还高,不过数据量不能超过其内存大小。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
12#
 楼主| 发表于 2012-12-20 23:15:17 | 只看该作者

Re: 请教:利用nodupkey可以去重复数据,但有没有简单办法把重复数据挑出来

模糊记得可以直接sort输出,刚查了下help,确认了下可以这样(V9.3)

[code:2iomnahs]data abs;
input blh $12. ksdm : $15. rq yymmdd10.;
attrib rq format=yymmdd10.;
cards;
PID000529036 8楼儿童病区 2012-3-13
PID000529036 ICU 2012-3-13
PID000529036 ICU 2012-3-14
PID000529036 ICU 2012-3-15
PID000529036 6楼儿童病区2 2012-3-13
PID000531543 8楼儿童病区 2012-3-14
PID000531543 ICU 2012-3-15
PID000531543 ICU 2012-3-16
;
run;

* V9.3
proc sort data=abs out=_a1 UNIQUEOUT=_a2 NOUNIQUEkey;
        by  ksdm rq;
run;

* V9.1的时候
proc sort data=abs out=_b1 dupout=_b2 nodupkey;
        by ksdm rq;
run;
[/code:2iomnahs]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
13#
 楼主| 发表于 2012-12-22 10:17:49 | 只看该作者

Re: 请教:利用nodupkey可以去重复数据,但有没有简单办法把重复数据挑出来

Good idea! This could be a little more concise:

proc sql;
        create table one_a as
        select *, monotonic() as id
        from abs
        order by ksdm,rq;

        create table two_a as
        select *
        from one_a
        group by ksdm,rq
        having max(id) ne min(id);

        alter table two_a drop id;
quit;

[quote="MerlinZHOU":2pm7kenj][code:2pm7kenj]
data abs;
input blh $12. ksdm : $ 15. rq yymmdd10.;
cards;
PID000529036 8楼儿童病区 2012-3-13
PID000529036 ICU 2012-3-13
PID000529036 ICU 2012-3-14
PID000529036 ICU 2012-3-15
PID000529036 6楼儿童病区2 2012-3-13
PID000531543 8楼儿童病区 2012-3-14
PID000531543 ICU 2012-3-15
PID000531543 ICU 2012-3-16
;

proc sql;

create table one as
select *
from abs
order by
ksdm,rq;

create table two as
select *, monotonic() as id
from one;

create table three as
select *
from two
group by ksdm,rq
having max(id)^=min(id);

alter table three drop id;

quit;
[/code:2pm7kenj][/quote:2pm7kenj]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
14#
 楼主| 发表于 2013-1-6 23:25:37 | 只看该作者

Re: 请教:利用nodupkey可以去重复数据,但有没有简单办法把重复数据挑出来

[quote="faithd":rkoxlgzz]版主的第一种方法是求出相同数据的第一条和最后一条数据,如果要输出所有的重复值,需要修改判断语句如下:
将语句
if first.rq^=last.rq then output two;
修改为:
if first.rq^=last.rq or (last.rq =0 and first.rq=0) then output two;[/quote:rkoxlgzz]


If first.rq and last.rq then delete;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-5-3 06:53 , Processed in 0.126689 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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