新專欄<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;
問候,
海闊