Neue Spalte<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich habe eine große Datenbank von Patienten, die für einen bestimmten Zustand ins Krankenhaus eingeliefert wurden. Ich habe versucht, eine neue Kolumne zu erstellen, um die "Jahre vor dem Tod" anzuzeigen. Siehe unten:
So sieht meine Datenbank aus:
| JAHR | geduldig | Mortality_in365days |
|---|
| 1990 | 221 |
|
| 1991 | 221 |
|
| 1991 | 221 |
|
| 1993 | 221 |
|
| 1995 | 221 | * |
| 2000 | 789 |
|
| 2001 | 789 |
|
| 2002 | 789 | * |
| 2001 | 965 |
|
| 2005 | 965 | * |
Folgendes versuche ich zu schaffen:
| JAHR | geduldig | Mortality_in365days | Todesjahr | Jahre vor dem Tod |
|---|
| 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 |
Ein Stern in der Spalte mortality_in365days bedeutet, dass sie innerhalb der letzten 365 Tage gestorben sind. Ich weiß, dass die Jahre vor dem Tod keine exakte Berechnung sein werden, da sie, je nachdem, wie lange sie gestorben sind (30 Tage gegenüber 365 Tagen), bedeuten können, dass sie vor einem Jahr gestorben sind. Ich hatte JMP eingerichtet, um die Spalte für das Todesjahr zu erstellen und dann eine einfache Subtraktionsformel zu erstellen, um die Jahre vor dem Tod zu berechnen, aber dann bin ich auf Probleme gestoßen. Ich hatte es manuell mit der Update-Funktion gemacht, da ich noch nicht sehr gut mit dem Scripting umgehen kann. Wenn Sie mir entweder durch manuelle Anweisungen oder durch Skripte helfen können, lassen Sie es mich wissen.
Vielen Dank.
Neue SpalteDas maximale Jahr für jeden Patienten entspricht offensichtlich dem Todesjahr. Sie können dann manuell eine Zusammenfassung mit dem nach Patient gruppierten Maximaljahr erstellen. Aktualisieren Sie dann die Originaltabelle mit der Zusammenfassung unter Verwendung von Patient als übereinstimmende Spalten in beiden Tabellen. Schließlich würde eine einfache Subtraktion (Todesjahr - Jahr) die letzte Spalte ergeben.
Hier ist ein etwas anderer Weg, um es per Skript zu tun
dt = Datentabelle ( "Datenbank" ) ;
Zusammenfassen ( p = durch ( : Geduldig ) . maxyear = Max ( : Jahr ) ) ;
aa = Assoziatives Array ( Eval ( p ) . Als Liste ( maxyear ) ) ;
col1 = dt << Neue Spalte ( "Todesjahr" . numerisch ) ;
col2 = dt << Neue Spalte ( "Jahre vor dem Tod" . numerisch ) ;
Für jede Reihe (
col1 [] = aa [ Verkohlen ( : Geduldig [] )] ;
col2 [] = col1 [] - : Jahr [] ;
) ;
Neue SpalteIch weiß wenig über JMP, aber es scheint mir, dass eine 2X DUL auch den Job machen wird:
Daten haben;
Infile-Karten-Missover;
Eingabe YEAR Patient $ Mortality_in365days $;
Karten;
1990 221
1991 221
1991 221
1993 221
1995 221 *
2000 789
2001 789
2002 789 *
2001 965
2005 965 *
;
Daten wollen;
tun bis (last.patient);
Set haben;
nach Patientenjahr;
Death_year = ifn (last.patient, year, death_year);
behalte den Tod_Jahr;
Ende;
tun bis (last.patient);
Set haben;
nach Patientenjahr;
Years_Before_death = Tod_Jahrjahr;
Ausgabe;
Ende;
Lauf;
proc drucken, ausführen;
Grüße,
Haikuo