使用Proc SQL拆分SAS患者就诊数据集 按就诊顺序筛选患者ID
SAS Proc SQL 实现跨院就诊顺序ID筛选方案
实现逻辑
通过数据集自连接匹配同一患者的不同医院就诊记录,校验两次就诊的时间先后关系,再对符合条件的患者ID去重,即可得到两个目标数据集。
完整代码
/* 此处将have替换为你的原始出入院数据集名称 */ proc sql; /* 生成先到A医院、后到B医院的患者ID数据集 */ create table a_to_b as select distinct ID from have a where exists ( select 1 from have b where a.ID = b.ID and a.Hospital = 'A' and b.Hospital = 'B' and a.Discharge_Date <= b.Admission_Date ); /* 生成先到B医院、后到A医院的患者ID数据集 */ create table b_to_a as select distinct ID from have a where exists ( select 1 from have b where a.ID = b.ID and a.Hospital = 'B' and b.Hospital = 'A' and a.Discharge_Date <= b.Admission_Date ); quit;
代码说明
- 用
exists子查询做匹配,相比笛卡尔积自连接运算效率更高,适合大数据量场景 - 时间判断条件
a.Discharge_Date <= b.Admission_Date默认支持出院当天直接到另一家医院入院的场景,如果要求两次就诊必须有间隔,将运算符改为<即可 distinct关键字保证每个患者ID仅输出一次,和要求的输出格式完全匹配
内容的提问来源于stack exchange,提问作者Student
相关产品推荐
相关产品推荐

