SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 782|回复: 7
打印 上一主题 下一主题

请教一个数据筛选的问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-11-25 00:22:53 | 只看该作者

请教一个数据筛选的问题

我在处理一组数据,给一个病人搭配一个医生,如果这个病人一年中看过几个医生而且看的次数一样,就输出最后一个医生,如果次数不一样,就输出次数最多的那个医生。数据简单可以写成:
patient   doctor   number
1            aa          1
1            bb          1
1            cc           1
1            dd          1
2            ee          3
2            ff           1
2           gg           2
3           hh           5

最后的输出是:
1            dd          1
2            ee          3
3           hh           5

每个病人一年看的医生数不同,希望经过筛选,每个病人只有一个医生。不知如何用SAS实现,谢谢帮助!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-11-25 11:15:41 | 只看该作者

Re: 请教一个数据筛选的问题

data raw;
input patient$ doctor$ number$;
cards;
1 aa 1
1 bb 1
1 cc 1
1 dd 1
2 ee 3
2 ff 1
2 gg 2
3 hh 5
;
run;
proc sort data=raw;
by patient number;
run;
data result;
set raw;
by patient number;
if last.patient;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-11-25 11:22:52 | 只看该作者

Re: 请教一个数据筛选的问题

<!-- s:o --><img src="{SMILIES_PATH}/icon_surprised.gif" alt=":o" title="Surprised" /><!-- s:o -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2008-11-25 22:07:57 | 只看该作者

Re: 请教一个数据筛选的问题

谢谢回复! 我的数据中还有一个看病日期的变量,筛选的原则为: 如果一个病人一年看几个医生,而且次数一样,就输出最后一次看的那个医生;如果次数不一样,就输出次数最多的那个医生。如果这样,如何实现呢?
例如:

patient  doctor  number  date
1           a           2         200602
1           b           2         200705
1           c           2         200509
1           d           2         200604
2           e           5         200602
2           f            3        200703

输出为:        1           b           2         200705
                   2           e           5         200602

我有几十万个病人的记录,晕死了。谢谢帮助!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2008-11-25 22:18:33 | 只看该作者

Re: 请教一个数据筛选的问题

请帮我看看这样是否可以:

proc sort data=a1;
by patient number date;
run;
data a2;
set a1;
by patient number date;
if last.patient then output;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2008-12-1 21:00:24 | 只看该作者

Re: 请教一个数据筛选的问题

data a;
input id $ doctor$ times;
cards;
1 aa 1
1 bb 1
1 cc 1
1 dd 1
2 ee 3
2 ff 1
2 gg 2
3 hh 5
;
run;
proc sort data=a;
by  id times;
data d;
set a;
by id;
if last.id then output;
run;
这个程序应该可以实现啦,注意这里
data d;
set a;
by id;
by后面只有id就可以拉,如果在加上其他变量就是错误的拉
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2008-12-1 22:17:51 | 只看该作者

Re: 请教一个数据筛选的问题

谢谢回复!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2008-12-2 16:13:26 | 只看该作者

Re: 请教一个数据筛选的问题

如果考虑时间,则
proc sort data=a;
by patient number date;
run;
data b;
set a;
by patient ;
if last.patient then output;
run;

goldfish上面的程序应该是可以的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 05:20 , Processed in 0.084057 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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