Nuova colonna<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho un grosso database di pazienti ospedalizzati per una determinata condizione. Ho cercato di creare una nuova colonna per indicare gli "anni prima della morte". Vedi sotto:
Ecco come appare il mio database:
| ANNO | paziente | Mortality_in365days |
|---|
| 1990 | 221 |
|
| 1991 | 221 |
|
| 1991 | 221 |
|
| 1993 | 221 |
|
| 1995 | 221 | * |
| 2000 | 789 |
|
| 2001 | 789 |
|
| 2002 | 789 | * |
| 2001 | 965 |
|
| 2005 | 965 | * |
Questo è quello che sto cercando di creare:
| ANNO | paziente | Mortality_in365days | Anno della morte | Anni prima della morte |
|---|
| 1990 | 221 |
| 1995 | 5 |
| 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 |
Una stella nella colonna mortality_in365days significa che sono morti negli ultimi 365 giorni. Conosco gli anni prima che la morte non sia un calcolo esatto poiché, a seconda di quanto tempo fa sono morti (30 giorni contro 365 giorni), potrebbe significare che sono morti l'anno precedente. Avevo creato JMP per creare la colonna dell'anno della morte, e poi ho fatto una semplice formula di sottrazione per calcolare anni prima della morte, ma poi mi sono imbattuto in problemi. L'ho fatto manualmente utilizzando la funzione di aggiornamento poiché non sono ancora molto bravo in fase di scripting. Se puoi aiutarmi con istruzioni manuali o script, fammi sapere.
Grazie.
Nuova colonnaL'anno massimo per ciascun paziente corrisponde ovviamente all'anno della morte. È quindi possibile eseguire manualmente un Riepilogo con l'anno massimo raggruppato per paziente. Quindi aggiornare la tabella originale con il riepilogo utilizzando Patient come colonne corrispondenti in entrambe le tabelle. Finalmente una semplice sottrazione (anno della morte - anno) darebbe l'ultima colonna.
Ecco un modo leggermente diverso di farlo per script
dt = Tabella dati ( "Banca dati" ) ;
Ricapitolare ( p = di ( : Paziente ) , MAXYEAR = Max ( : Anno ) ) ;
aa = Array associativo ( Eval ( p ) , Come lista ( MAXYEAR ) ) ;
col1 = dt << Nuova colonna ( "Anno della morte" , numerico ) ;
col2 = dt << Nuova colonna ( "Anni prima della morte" , numerico ) ;
Per ogni riga (
col1 [] = aa [ carbonizzare ( : Paziente [] )] ;
col2 [] = col1 [] - : Anno [] ;
) ;
Nuova colonnaConosce poco su JMP, tuttavia, mi sembra che anche un DUL 2X farà il lavoro:
i dati hanno;
carte d'infima missoverà;
inserire il paziente dell'ANNO $ Mortality_in365days $;
carte;
1990 221
1991 221
1991 221
1993 221
1995 221 *
2000 789
2001 789
2002 789 *
2001 965
2005 965 *
;
i dati vogliono;
fare fino a (last.patient);
set have;
per anno paziente;
Death_year = IFN (last.patient, anno, death_year);
conservare death_year;
fine;
fare fino a (last.patient);
set have;
per anno paziente;
Years_Before_death = death_year anni;
produzione;
fine;
correre;
proc print; run;
Saluti,
Haikuo