SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 5544|回复: 13
打印 上一主题 下一主题

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

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2012-11-8 11:16:45 | 只看该作者

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

/**********************
利用nodupkey可以去重复数据,但有没有简单办法把重复数据挑出来,例如:
************************/
data abs;
input blh  $15. 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
;

只显示出重复的部分(相同时间,相同地点),例如:
PID000529036        ICU                        2012-3-15
PID000531543        ICU                        2012-3-15
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2012-11-8 12:58:44 | 只看该作者

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

[code:2b25p2fh]

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 sort data=abs out=one;
  by ksdm rq;
run;

data two three;
set one;
by ksdm rq;
if first.rq ^=last.rq then output two;
else output three;
run;



[/code:2b25p2fh]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2012-11-8 18:07:50 | 只看该作者

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

神一般的回答,没想到可以这样解决,谢谢版主!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2012-11-8 18:20:52 | 只看该作者

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

如果还有其他好的办法,请继续指教!拓展下视野
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2012-11-22 15:27:46 | 只看该作者

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

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
;
run;

proc sql;
   create table aa as
   select a.*
   from abs as a
   group by blh,ksdm
   having count (ksdm)>=2;
quit;

这样应该也可以找到重复的数据。找出重复接受同类治疗的患者~
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2012-11-24 10:30:38 | 只看该作者

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

感谢linkidy的回复,我运行你的代码,没有得到我想要的结果,我也想过这种方法,似乎行不通
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2012-11-25 11:40:57 | 只看该作者

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

linkidy的方式是对的
[code:6rw6p95l]
proc sql;
create table aa as
select a.*
from abs as a
group by ksdm,rq
having count (rq)>=2;
quit;
[/code:6rw6p95l]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2012-11-25 15:30:09 | 只看该作者

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

感谢linkidy的思路,感谢版主的帮助。
这个思路可以作为解决这类问题办法之一,值得借鉴,再次感谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2012-11-27 21:13:11 | 只看该作者

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

[code:26evcp83]
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:26evcp83]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2012-12-5 14:38:24 | 只看该作者

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-3 06:27 , Processed in 0.072503 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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