作者tew (咖啡王子)
站内Statistics
标题Re: [问题] SAS的retain功能
时间Thu May 1 23:14:46 2008
※ 引述《livcruise (liv)》之铭言:
: 目前将门诊跟住院合并了
: 原本的住院日期 出院日期(针对住院) 以及就医日期(门诊)是文字格式
: 已经改成SAS mdy格式 另外新增变项:住院日数
: 另外相关的变项是 病患id(文字)、药品代码(文字:A药跟B药)、给药日份(数字)
: 一个病患 一种药就会有一列观查值 包含上述变项
: 若是住院就会有住院日期 出院日期 门诊则是只有就医日期
: 想请教 今天想抓出
: 1.住院期间 有同天服用A药跟B药的纪录
: 2. 门诊: 病患的给药日份内 有吃到A药跟B药的纪录
: 不管是A药先开出或是B药先开出 只要有同时服用即要抓出到另一个档案
: 以下是简单图示范例说明 (日期暂仍用文字格式呈现)
: id 住院日期 出院日期 住院天数 就医日期 药品代码 给药天份
: 1 5/1 5/8 8 A
: 1 5/1 5/8 8 B
: 以上是一种可能
: 1 8/5 8/10 6 A
: 1 8/7 8/10 4 B
: 这种会发生在医师临时新开药 我也要抓出来
: 2 1/5 A 28
: 2 2/1 B 7
: 2 2/8 B 14
: 2 2/17 A 5
: 2 2/24 B 8
: 以上这五项 前四项都要抓出 只有最後一项不用
: 大致上就是这样~ 拜托各位了!
: 我是想说用retain来抓 但是 写不出来
: 或是 大大们有更好的办法~麻烦了! 感激不尽
建议日期用数字格式
并分开为 月跟日
m d me 服药天数
2 1 5 A 28
2 2 1 B 7
2 2 8 B 14
2 2 17 A 5
2 2 24 B 8
接着 我们可以做一件事情
if m=1 then dd=m*31+d;
if m=2 then dd=m*28+d;
/*请处理完12个月 闰年的话也处理*/
ddd=dd+服药天数;
接着 我们就可以这样做
if 病人=lag(病人) and lag(dd) <=dd<=lag(ddd) then same=lag(me);
当然 我不清楚你的资料会同时服用几种药物
仅就你目前展示的资料 可以这样纂写
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 134.208.32.109
※ 编辑: tew 来自: 134.208.32.109 (05/02 00:17)