SAS中文论坛

标题: 请教一个数据筛选的问题 [打印本页]

作者: shiyiming    时间: 2008-11-25 00:22
标题: 请教一个数据筛选的问题
我在处理一组数据,给一个病人搭配一个医生,如果这个病人一年中看过几个医生而且看的次数一样,就输出最后一个医生,如果次数不一样,就输出次数最多的那个医生。数据简单可以写成:
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实现,谢谢帮助!
作者: shiyiming    时间: 2008-11-25 11:15
标题: 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;
作者: shiyiming    时间: 2008-11-25 11:22
标题: Re: 请教一个数据筛选的问题
<!-- s:o --><img src="{SMILIES_PATH}/icon_surprised.gif" alt=":o" title="Surprised" /><!-- s:o -->
作者: shiyiming    时间: 2008-11-25 22:07
标题: 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

我有几十万个病人的记录,晕死了。谢谢帮助!
作者: shiyiming    时间: 2008-11-25 22:18
标题: Re: 请教一个数据筛选的问题
请帮我看看这样是否可以:

proc sort data=a1;
by patient number date;
run;
data a2;
set a1;
by patient number date;
if last.patient then output;
run;
作者: shiyiming    时间: 2008-12-1 21:00
标题: 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就可以拉,如果在加上其他变量就是错误的拉
作者: shiyiming    时间: 2008-12-1 22:17
标题: Re: 请教一个数据筛选的问题
谢谢回复!
作者: shiyiming    时间: 2008-12-2 16:13
标题: Re: 请教一个数据筛选的问题
如果考虑时间,则
proc sort data=a;
by patient number date;
run;
data b;
set a;
by patient ;
if last.patient then output;
run;

goldfish上面的程序应该是可以的




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2