新专栏<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我有一个大型数据库患者住院治疗一定的病情。 我一直试图建立一个新的专栏来表明“死亡前几年”。 见下文:
这是我的数据库的样子:
| 年 | 患者 | Mortality_in365days |
|---|
| 1990年 | 221 |
|
| 1991年 | 221 |
|
| 1991年 | 221 |
|
| 1993年 | 221 |
|
| 1995年 | 221 | * |
| 2000 | 789 |
|
| 2001年 | 789 |
|
| 2002年 | 789 | * |
| 2001年 | 965 |
|
| 2005年 | 965 | * |
这就是我想要创建的:
| 年 | 患者 | Mortality_in365days | 死亡之年 | 死前几年 |
|---|
| 1990年 | 221 |
| 1995年 | 五 |
| 1991年 | 221 |
| 1995年 | 4 |
| 1991年 | 221 |
| 1995年 | 4 |
| 1993年 | 221 |
| 1995年 | 2 |
| 1995年 | 221 | * | 1995年 | 0 |
| 2000 | 789 |
| 2002年 | 2 |
| 2001年 | 789 |
| 2002年 | 1 |
| 2002年 | 789 | * | 2002年 | 0 |
| 2001年 | 965 |
| 2005年 | 4 |
| 2005年 | 965 | * | 2005年 | 0 |
death_in365days列中的明星意味着他们在过去365天内死亡。 我知道死亡前几年不会是一个确切的计算,因为根据他们多久前死亡(30天对365天),这可能意味着他们在前一年死亡。 我已经设置了JMP来制作死亡年份列,然后制作一个简单的减法公式来计算死亡前的年份,但后来我遇到了问题。 我已经使用更新功能手动完成了,因为我还不擅长脚本编写。 如果您可以通过手动说明或脚本帮助我,请告诉我。
谢谢。
新专栏每位患者的最大年份显然与死亡年份相对应。然后,您可以手动执行按患者分组的最大年份汇总。然后使用Patient作为两个表中的匹配列,使用摘要更新原始表。最后一个简单的减法(死亡年 - 年)将给出最后一列。
这是通过脚本执行此操作的一种略微不同的方式
DT = 数据表 ( “数据库” ) ;
总结 ( p = 通过 ( : 患者 ) , maxyear = 马克斯 ( : 年 ) ) ;
AA = 关联数组 ( EVAL ( p ) ,作为列表 ( maxyear ) ) ;
COL1 = DT << 新栏目 ( “死亡之年” ,数字 ) ;
COL2 = DT << 新栏目 ( “死前几年” ,数字 ) ;
对于每一行 (
COL1 [] = AA [ 烧焦 ( : 患者 [] )] ;
COL2 [] = COL1 [] - : 年 [] ;
) ;
新专栏对JMP知之甚少,但在我看来,2X DUL也可以完成这项工作:
数据有;
infile cards missover;
输入YEAR患者$ Mortality_in365days $;
牌;
1990 221
1991年221
1991年221
1993 221
1995 221 *
2000 789
2001 789
2002 789 *
2001 965
2005 965 *
;
数据需要;
直到(last.patient);
设有;
按病人年份;
Death_year = IFN(last.patient,一年,death_year);
保留death_year;
结束;
直到(last.patient);
设有;
按病人年份;
Years_Before_death = death_year年;
输出;
结束;
跑;
proc print; run;
问候,
海阔