统计211

标题: 按对照匹配病例的SAS程序实现请教,^_^ [打印本页]

作者: 缘梦缘    时间: 2010-11-11 12:30
标题: 按对照匹配病例的SAS程序实现请教,^_^
问大家一个SAS程序啊,如下面的数据,case为0是对照,case为1是病例,想要达到的目的是:以对照(case=0)为参照,为每一个对照选一个年龄上下相差不超过2岁的病例作为匹配,选过的病例不能再选。
pid case age
1 1 50
2 1 27
3 1 26
4 0 49
5 1 49
6 0 48
7 0 25
如第四个研究对象(pid=4),age=49,合适的匹配病例的年龄范围可以是47-51,这样的话第一个研究对象就合适;对第六个研究对象,age=48,合适的匹配对象可以是第一个和第五个,但是第一个已经被选,所以只能选第五个做为匹配。
不知道大家有没有比较好的方法能够批量实现上面的目的,非常感谢!^_^
作者: chenli    时间: 2010-11-11 22:14
以前做这个的时候,直接用Excel或者SPSS的排序、筛选纯手工操作。还好数据量不大,汗。。。

作者: chenli    时间: 2010-11-11 22:16
本帖最后由 chenli 于 2010-11-11 22:16 编辑

前一段时间在哪本书上看到,可以用SPSS编写一个select的程序来实现。
作者: pigtail    时间: 2010-11-11 22:43
配对与否是在实验设计的时候考虑的,而不是有了数据以后考虑的
作者: xinli    时间: 2010-11-13 12:21
回复 pigtail 的帖子

一针见血~但是我们做流行病学研究时,遇到的更多是像缘梦缘楼主所描述的情况,都是等资料收集好了,再配对,这理论不是与实际相违背?
作者: xinli    时间: 2010-11-13 12:22
相应的SAS程序是怎么操作的?
作者: 缘梦缘    时间: 2010-11-21 17:22
data temp;
input id group age;
cards;
1 1 50
2 1 27
3 1 26
4 0 49
5 1 49
6 0 48
7 0 25
;
run;
proc sql;
create table comp as
  select a.id as ida, a.group as groupa, a.age as agea,
         b.id as idb, b.group as groupb, b.age as ageb,
         abs(b.age-a.age) as gap_age
  from (select * from temp where group=1) as a,
       (select * from temp where group=0) as b
  where (ageb-agea) between -5 and 5
;
quit;
proc sort data=comp;
by  idb;
run;
data comp;
set comp;
by idb;
n=first.idb;
run;
proc sort data=comp;
by  ida;
run;
data comp;
set comp;
by ida;
m=first.ida;
run;
data comp(keep=ida agea idb ageb gap_age);
set comp;
if n=m;
run;
/*A :试验组  B:对照组   gap_age:年龄差*/
作者: wangming    时间: 2010-11-22 10:31
回复 缘梦缘 的帖子

看的头都晕了。
先试试看,谢谢缘梦缘!
作者: wmqy2004    时间: 2011-1-10 23:50
回复 缘梦缘 的帖子

It is too complicated. I am concern that maybe someone will be confused. You'd better to compiled your program as a macro.
作者: su2005    时间: 2011-1-14 20:08
回复 缘梦缘 的帖子

里面好像没有考虑到缺少对照的情况,比如有年龄是10的病例,但没有年龄是8~12的对照,当出现这种情况的时候,没有给出处理的方法。
作者: tongji    时间: 2011-1-20 18:26
回复 su2005 的帖子

{:1_165:}
作者: 天下有我    时间: 2012-8-21 17:35
呵呵。。。。




欢迎光临 统计211 (http://tj211.com/) Powered by Discuz! X3.2