Nouvelle colonne<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai une grande base de données de patients hospitalisés pour une certaine maladie. J'ai essayé de faire une nouvelle colonne pour indiquer les "années avant la mort". Voir ci-dessous:
Voici à quoi ressemble ma base de données:
| ANNÉE | patient | Mortality_in365days |
|---|
| 1990 | 221 |
|
| 1991 | 221 |
|
| 1991 | 221 |
|
| 1993 | 221 |
|
| 1995 | 221 | * |
| 2000 | 789 |
|
| 2001 | 789 |
|
| 2002 | 789 | * |
| 2001 | 965 |
|
| 2005 | 965 | * |
C'est ce que j'essaie de créer:
| ANNÉE | patient | Mortality_in365days | Année de la mort | Des années avant la mort |
|---|
| 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 |
Une étoile dans la colonne mortalité_dans 365 jours signifie qu'ils sont morts au cours des 365 derniers jours. Je sais que le nombre d'années avant le décès ne sera pas un calcul exact car, selon le temps écoulé depuis leur décès (30 jours contre 365 jours), cela peut vouloir dire qu'ils sont morts l'année précédente. J'avais configuré JMP pour créer la colonne de l'année de décès, puis une formule de soustraction simple pour calculer les années avant le décès, mais j'ai ensuite rencontré des problèmes. Je l'avais fait manuellement en utilisant la fonctionnalité de mise à jour car je ne suis pas encore très bon en script. Si vous pouvez m'aider avec des instructions manuelles ou des scripts, faites-le moi savoir.
Merci.
Nouvelle colonneL'année maximale pour chaque patient correspond évidemment à l'année du décès. Vous pouvez ensuite manuellement faire un résumé avec l'année maximum groupée par patient. Ensuite, mettez à jour la table d'origine avec le résumé en utilisant Patient comme colonnes correspondantes dans les deux tables. Enfin, une simple soustraction (année de décès - année) donnerait la dernière colonne.
Voici une manière légèrement différente de le faire par script
dt = Tableau de données ( "base de données" ) ;
Résumer ( p = par ( : Patient ) , maxyear = Max ( : Année ) ) ;
aa = Tableau associatif ( Eval ( p ) , Comme liste ( maxyear ) ) ;
col1 = dt << Nouvelle colonne ( "Année mort" , numérique ) ;
col2 = dt << Nouvelle colonne ( "Des années avant la mort" , numérique ) ;
Pour chaque rangée (
col1 [] = aa [ Carboniser ( : Patient [] )] ;
col2 [] = col1 [] - : Année [] ;
) ;
Nouvelle colonneEn savoir peu sur JMP, cependant, il me semble que 2X DUL fera également l'affaire:
les données ont;
cartes infiles missover;
input YEAR patient $ Mortality_in365days $;
cartes;
1990 221
1991 221
1991 221
1993 221
1995 221 *
2000 789
2001 789
2002 789 *
2001 965
2005 965 *
;
données veulent;
faire jusqu'à (last.patient);
ensemble avoir;
par année patiente;
Death_year = ifn (last.patient, year, death_year);
retenir la mort_année;
fin;
faire jusqu'à (last.patient);
ensemble avoir;
par année patiente;
Years_Before_death = death_year-year;
sortie;
fin;
courir;
proc print; run;
Cordialement,
Haikuo