Berechnung des Alters aus dem Geburtsdatum
-
- Beiträge: 7
- Registriert: 21.06.2007, 03:56
Berechnung des Alters aus dem Geburtsdatum
Hallo,
ich müsste das Alter (in Jahren und Monaten) aus dem Geburtsdatum (tt.mm.jjjj) berechnen.
Ich komme bei diesem Problem einfach nicht weiter, hab es schon mit einfach Rumprobieren, Suche in der SPSS-Hilfe und im Handbuch versucht und bin nicht weitergekommen.
Vielleicht kennt sich ja hier jemand aus, weil es mir zu viel wäre das Alter von 700 Kindern von Hand auszurechnen.
Wie kann ich die Berechnung im Menü oder auch per Syntax schaffen?
Schon mal im Voraus vielen Dank,
Sebastian
ich müsste das Alter (in Jahren und Monaten) aus dem Geburtsdatum (tt.mm.jjjj) berechnen.
Ich komme bei diesem Problem einfach nicht weiter, hab es schon mit einfach Rumprobieren, Suche in der SPSS-Hilfe und im Handbuch versucht und bin nicht weitergekommen.
Vielleicht kennt sich ja hier jemand aus, weil es mir zu viel wäre das Alter von 700 Kindern von Hand auszurechnen.
Wie kann ich die Berechnung im Menü oder auch per Syntax schaffen?
Schon mal im Voraus vielen Dank,
Sebastian
-
- Beiträge: 818
- Registriert: 26.09.2006, 14:52
-
- Beiträge: 7
- Registriert: 21.06.2007, 03:56
Syntax zur Altersberechnung funktioniert bei mir nicht
Hallo,
ich konnte bis jetzt leider noch nicht das Alter berechnen. Ich habe in die vorgeschlagene Syntax meine Variablenbezeichnung eingetragen,
COMPUTE Alter=(DATEDIFF(u_datum,birth,"months")/12).
Execute.
beim Ausführen bekomme ich jedoch folgende Fehlermeldung:
>Error # 4032 in column 16. Text: DATEDIFF
>Für die Funktionen CTIME, DATE, TIME und XDATE sowie CDF, IDF, NCD, NPDF,
>PDF und RV sind Funktionsmodifikatoren erforderlich, es ist jedoch keiner
>vorhanden.
>This command not executed.
Ich konnte den DATEDIFF-Befehl nicht im "Command Syntax Reference" PDF für meine Version 12 finden und sehe in auch nicht in -> Variable berechnen -> Funktionen im Menü.
Kann es sein, dass es den Befehl in SPSS 12 noch nicht gibt, oder habe ich irgendeinen Fehler gemacht?
Viele Grüße,
Sebastian
ich konnte bis jetzt leider noch nicht das Alter berechnen. Ich habe in die vorgeschlagene Syntax meine Variablenbezeichnung eingetragen,
COMPUTE Alter=(DATEDIFF(u_datum,birth,"months")/12).
Execute.
beim Ausführen bekomme ich jedoch folgende Fehlermeldung:
>Error # 4032 in column 16. Text: DATEDIFF
>Für die Funktionen CTIME, DATE, TIME und XDATE sowie CDF, IDF, NCD, NPDF,
>PDF und RV sind Funktionsmodifikatoren erforderlich, es ist jedoch keiner
>vorhanden.
>This command not executed.
Ich konnte den DATEDIFF-Befehl nicht im "Command Syntax Reference" PDF für meine Version 12 finden und sehe in auch nicht in -> Variable berechnen -> Funktionen im Menü.
Kann es sein, dass es den Befehl in SPSS 12 noch nicht gibt, oder habe ich irgendeinen Fehler gemacht?
Viele Grüße,
Sebastian
-
- Beiträge: 67
- Registriert: 17.01.2007, 18:15
Hallo Sebiczek,
du hast völlig recht, diese Funktion wird erst ab SPSS 13 unterstützt. In früheren Versionen habe ich Altersberechnungen mit folgender Formel erstellt:
COMPUTE Alter=(YRMODA(u_jahr, u_monat, u_tag)-YRMODA(g_jahr, g_monat, g_tag))/365.25.
fre alter.
Das ist etwas umständlicher. Dazu musst du jeweils drei Variablen für das Geburtsdatum und drei Variablen für das "Untersuchungsdatum" erstellen. Hast du z.B. das Geburtsdatum 21. Oktober 1990 und das Untersuchungsdatum 15. März 2005 must du sie folgendermaßen definieren:
Geburtstag:
g_jahr = 1990
g_Monat = 10
g_tag = 21
Untersuchungstag:
u_Jahr = 2005
u_Monat = 03
u_tag = 15
Die Funktion "YRMODA" gibt die Differenz in Tagen aus. Ein Jahr hat im Schnitt 365,25 Tage, denn die Schaltjahre müssen auf ein Jahr umgerechnet werden. Daher muss das Ergebnis noch durch 365,25 dividiert werden. So erhälst du eine ziemlich genau Altersberechnung.
Viel Erfolg damit
Gruß Volker
du hast völlig recht, diese Funktion wird erst ab SPSS 13 unterstützt. In früheren Versionen habe ich Altersberechnungen mit folgender Formel erstellt:
COMPUTE Alter=(YRMODA(u_jahr, u_monat, u_tag)-YRMODA(g_jahr, g_monat, g_tag))/365.25.
fre alter.
Das ist etwas umständlicher. Dazu musst du jeweils drei Variablen für das Geburtsdatum und drei Variablen für das "Untersuchungsdatum" erstellen. Hast du z.B. das Geburtsdatum 21. Oktober 1990 und das Untersuchungsdatum 15. März 2005 must du sie folgendermaßen definieren:
Geburtstag:
g_jahr = 1990
g_Monat = 10
g_tag = 21
Untersuchungstag:
u_Jahr = 2005
u_Monat = 03
u_tag = 15
Die Funktion "YRMODA" gibt die Differenz in Tagen aus. Ein Jahr hat im Schnitt 365,25 Tage, denn die Schaltjahre müssen auf ein Jahr umgerechnet werden. Daher muss das Ergebnis noch durch 365,25 dividiert werden. So erhälst du eine ziemlich genau Altersberechnung.
Viel Erfolg damit
Gruß Volker
-
- Beiträge: 67
- Registriert: 17.01.2007, 18:15
Nachtrag zur Altersberechnung
Hallo Sebastian,
ich habe einen Nachtrag zu meinem gestrigen Beitrag zur Altersberechnung mit älteren SPSS-Versionen.
Um mit der Funktion "YRMODA" das Alter zu berechnen, muss man jeweils drei Variablen für Geburtstag und Untersuchungsdatum erstellen. Wenn diese beiden Datumsangaben aber bereits als Variablen des Typs yyyy/mm/dd vorliegen, wäre es extrem zeitaufwändig, alle Variablen entsprechend umzukodierern. Daher habe ich ein Setup geschrieben, mit dem man eine Altersberechnung ohne umkodieren durchführen kann. Da hier lediglich der Compute-Befehl ohne Datumsfunktion eingesetzt wird, müssste dieses Setup mit allen SPSS-Versionen laufen.
*Ausgangsituation: Die Datumsvariablen liegen als Typ yyyy/mm/dd vor.
*Nun macht man sich die Möglichkeit zu nütze, dass SPSS Datumsvariablen als numerische Variablen ausgeben kann.
*Dies führt man für die Variable "geburt" und "u_datum" durch.
*Danach kann man mit "compute" die Differenz berechnen lassen.
*SPSS gibt die numersiche Differnez als Anzahl der Sekunden zwischen den beiden Zeitangaben aus.
*Im nächsten Schritt kann man die Differnez durch die Anzahl der Sekunden eines Jahres dividieren (60*60*24*365) = 31536000.
*Da es Schaltjahre gibt, muss noch die Anzahl der Sekunden für einen Viertel Tag addiert werden (60*60*6) = 21600.
*Nun kann man die numersiche Differenz zwischen "u_datum" und "geburt" durch die durchschnittliche Anzahl der Sekunden für ein Jahr dividieren, so müsste man eine Altersvariable erhalten.
*Folgendes Setup setzt diese Überlegungen um.
*Umwandeln der Datumsvariablen in numersiche Variablen.
*Die Variablen haben die Endung "_n" erhalten, um diese als numerische Datumsangaben zu kennzeichnen.
comp geburt_n = geburt.
comp u_dat_n = u_datum.
fre geburt_n u_dat_n.
*Differenz berechnen.
comp Alter2 = (u_dat_n - geburt_n).
exe.
format alter2 (f15.0).
fre alter2.
*Nun kann die Variable Alter2 durch die Anzahl der Sekunden eines Jahres dividiert werden.
*Der Wert beträgt: 31536000+21600 = 31557600.
comp alter3 = (alter2/31557600).
exe.
format alter3 (f5.2).
fre alter3.
*Fazit.
*Das Ergebins stimmt auf zwei Dezimale gerundet, ab drei Dezimalstellen gibt es leichte Abweichungen zum korrekten Alter.
*Wem diese Genauigkeit ausreicht, kann also auch mit Hilfe dieses Setups mit älteren SPSS Versionen eine Altersberechnung durchzuführen.
Viel Erfolg damit.
Gruß Volker
PS:
Kommentare bitte rückmelden, eventuell kann das Setup noch optimiert werden.
ich habe einen Nachtrag zu meinem gestrigen Beitrag zur Altersberechnung mit älteren SPSS-Versionen.
Um mit der Funktion "YRMODA" das Alter zu berechnen, muss man jeweils drei Variablen für Geburtstag und Untersuchungsdatum erstellen. Wenn diese beiden Datumsangaben aber bereits als Variablen des Typs yyyy/mm/dd vorliegen, wäre es extrem zeitaufwändig, alle Variablen entsprechend umzukodierern. Daher habe ich ein Setup geschrieben, mit dem man eine Altersberechnung ohne umkodieren durchführen kann. Da hier lediglich der Compute-Befehl ohne Datumsfunktion eingesetzt wird, müssste dieses Setup mit allen SPSS-Versionen laufen.
*Ausgangsituation: Die Datumsvariablen liegen als Typ yyyy/mm/dd vor.
*Nun macht man sich die Möglichkeit zu nütze, dass SPSS Datumsvariablen als numerische Variablen ausgeben kann.
*Dies führt man für die Variable "geburt" und "u_datum" durch.
*Danach kann man mit "compute" die Differenz berechnen lassen.
*SPSS gibt die numersiche Differnez als Anzahl der Sekunden zwischen den beiden Zeitangaben aus.
*Im nächsten Schritt kann man die Differnez durch die Anzahl der Sekunden eines Jahres dividieren (60*60*24*365) = 31536000.
*Da es Schaltjahre gibt, muss noch die Anzahl der Sekunden für einen Viertel Tag addiert werden (60*60*6) = 21600.
*Nun kann man die numersiche Differenz zwischen "u_datum" und "geburt" durch die durchschnittliche Anzahl der Sekunden für ein Jahr dividieren, so müsste man eine Altersvariable erhalten.
*Folgendes Setup setzt diese Überlegungen um.
*Umwandeln der Datumsvariablen in numersiche Variablen.
*Die Variablen haben die Endung "_n" erhalten, um diese als numerische Datumsangaben zu kennzeichnen.
comp geburt_n = geburt.
comp u_dat_n = u_datum.
fre geburt_n u_dat_n.
*Differenz berechnen.
comp Alter2 = (u_dat_n - geburt_n).
exe.
format alter2 (f15.0).
fre alter2.
*Nun kann die Variable Alter2 durch die Anzahl der Sekunden eines Jahres dividiert werden.
*Der Wert beträgt: 31536000+21600 = 31557600.
comp alter3 = (alter2/31557600).
exe.
format alter3 (f5.2).
fre alter3.
*Fazit.
*Das Ergebins stimmt auf zwei Dezimale gerundet, ab drei Dezimalstellen gibt es leichte Abweichungen zum korrekten Alter.
*Wem diese Genauigkeit ausreicht, kann also auch mit Hilfe dieses Setups mit älteren SPSS Versionen eine Altersberechnung durchzuführen.
Viel Erfolg damit.
Gruß Volker
PS:
Kommentare bitte rückmelden, eventuell kann das Setup noch optimiert werden.
-
- Beiträge: 2
- Registriert: 06.08.2007, 14:03
Hallo,
ich arbeite ebenfalls mit SPSS 12.0 und will nun den Zeitabstand zwischen der Erhebung und dem jeweils angegebenen Datum im Fragebogen (Gründungsdatum) berechnen. Allerdings habe ich nur Angaben für Monat und Jahr. Nun habe ich da mir der entsprechende Tag fehlt immer den ersten im Monat angegeben und die Berechung durchgeführt.
Jetzt krieg ich aber Zahlen wie 2,83 raus. Die sagen aber doch auf Anhieb noch nichts. Diese 2,83 entspricht 2 Jahren und 10 Monaten. Aber wie kriege ich das raus ohne selbst bei jedem Fall nachzurechnen?
Grüße Fricke
ich arbeite ebenfalls mit SPSS 12.0 und will nun den Zeitabstand zwischen der Erhebung und dem jeweils angegebenen Datum im Fragebogen (Gründungsdatum) berechnen. Allerdings habe ich nur Angaben für Monat und Jahr. Nun habe ich da mir der entsprechende Tag fehlt immer den ersten im Monat angegeben und die Berechung durchgeführt.
Jetzt krieg ich aber Zahlen wie 2,83 raus. Die sagen aber doch auf Anhieb noch nichts. Diese 2,83 entspricht 2 Jahren und 10 Monaten. Aber wie kriege ich das raus ohne selbst bei jedem Fall nachzurechnen?
Grüße Fricke
-
- Beiträge: 67
- Registriert: 17.01.2007, 18:15
Hallo Fricke,
Du kannst in der Variablenansicht bei SPSS auch andere Datumsformate einstellen. Wenn du nur Jahr und Monat hast, kannst du einfach das Format auf mmm yyyy umstellen. Wenn du dann z.B. "04 1990" eingibst (mit Leerzeichen) erscheint bei SPSS in der Datenbank "APR 1990". So brauchst du keinen fiktiven Tag angeben. Das Setup funktioniert auch mit solchen Datumsformaten. Wahrscheinlich müssen dann aber beide Datumsvariablen so umgestellt werden.
Wenn du aber einen Tag angeben möchtest, dann nicht den 1. eines Monats sondern die Monatsmitte, also den 15. Wenn man keine Informationen über eine Verteilung hat, aber eine Aussage treffen muss, nimmt man als Schätzer das arithmetische Mittel. Dadurch werden die Abweichungen vom "wahren Wert", den mal leider nicht kennt, im Durchschnitt minimiert. Dies ist eine allgemeine Vorgehensweise in der Statistik.
Beispiel: Angenommen jemand hat am 2. des Monats Geburtstag, dann hast du + 1 Tag Fehlerdiffenrenz (2-1=1), hat jemand am 30. Tag Geburtstag, hast du +29 Tage Fehlerdifferenz (30-1=29). Du hast dann eine Summe von 30 Fehlertagen. Nimmst du aber den 15. Tag dann hast du beim ersten Beispiel -13 Tage Fehlerdiffernz (2-15=-13) und im zweiten Beispiel +15 Tage Fehlerdiffernz (30-15=15). Durch die unterschiedlichen Vorzeichen gleichen sich die Fehlerdifferenzen zum größten Teil aus, daher beträgt die die Summe der Fehlertage nur zwei Tage. Spielst du das für jeden Tag im Monat durch, vom 1. bis 31., kommst du auf eine durchschnittliche Abweichung von 0.
Zu deiner Frage, wie man 2,83 Jahre in 2 Jahre und 10 Monate mit SPSS umrechnet kann ich dir leider auch nichts sagen. Aber ist es für deine Auswertung wirklich wichtig, dass du die Zeitangebe im Dodekasystem vorliegen hast und nicht im Dezimalsystem? Der Zeitraum ist ja identisch. Falls du das wirklich brauchst, würde ich die ID-Variable und Jahresvariable als Tabelle in Word kopieren, die Jahresvariable brauchst du dann aber zweimal. Anschließend würde ich mit einem Makro aus einer Spalte die Dezimalstellen löschen, aus der anderen Spalte die Werte vor dem Komma durch Null ersetzen. Dann wieder in SPSS zurückkopieren und darauf achten, dass bei der Zuweisung der Fälle nichts durcheinandergekommen ist, daher auch die IDVariable als ID2 in den Datensatz kopieren. Dann kannst du schauen, ob die ID-Nummern pro Fall übereinstimmen. Das kannst du mit folgender Syntax machen:
compute id_tmp = id-id2.
fre id_tmp.
Wenn dann Werte ungleich 0 herauskommen, ist etwas schiefgelaufen.
Überlege dir, ob du im Datenhandling so sicher bist, dass dir beim hinundherkopieren kein Fehler unterläuft, außerdem benötigst du ein paar Kenntnisse in VBA-Programmierung.
Daher, wenn irgendmöglich bleibe beim Dezimalsystem.
Viele Grüße
Volker
Du kannst in der Variablenansicht bei SPSS auch andere Datumsformate einstellen. Wenn du nur Jahr und Monat hast, kannst du einfach das Format auf mmm yyyy umstellen. Wenn du dann z.B. "04 1990" eingibst (mit Leerzeichen) erscheint bei SPSS in der Datenbank "APR 1990". So brauchst du keinen fiktiven Tag angeben. Das Setup funktioniert auch mit solchen Datumsformaten. Wahrscheinlich müssen dann aber beide Datumsvariablen so umgestellt werden.
Wenn du aber einen Tag angeben möchtest, dann nicht den 1. eines Monats sondern die Monatsmitte, also den 15. Wenn man keine Informationen über eine Verteilung hat, aber eine Aussage treffen muss, nimmt man als Schätzer das arithmetische Mittel. Dadurch werden die Abweichungen vom "wahren Wert", den mal leider nicht kennt, im Durchschnitt minimiert. Dies ist eine allgemeine Vorgehensweise in der Statistik.
Beispiel: Angenommen jemand hat am 2. des Monats Geburtstag, dann hast du + 1 Tag Fehlerdiffenrenz (2-1=1), hat jemand am 30. Tag Geburtstag, hast du +29 Tage Fehlerdifferenz (30-1=29). Du hast dann eine Summe von 30 Fehlertagen. Nimmst du aber den 15. Tag dann hast du beim ersten Beispiel -13 Tage Fehlerdiffernz (2-15=-13) und im zweiten Beispiel +15 Tage Fehlerdiffernz (30-15=15). Durch die unterschiedlichen Vorzeichen gleichen sich die Fehlerdifferenzen zum größten Teil aus, daher beträgt die die Summe der Fehlertage nur zwei Tage. Spielst du das für jeden Tag im Monat durch, vom 1. bis 31., kommst du auf eine durchschnittliche Abweichung von 0.
Zu deiner Frage, wie man 2,83 Jahre in 2 Jahre und 10 Monate mit SPSS umrechnet kann ich dir leider auch nichts sagen. Aber ist es für deine Auswertung wirklich wichtig, dass du die Zeitangebe im Dodekasystem vorliegen hast und nicht im Dezimalsystem? Der Zeitraum ist ja identisch. Falls du das wirklich brauchst, würde ich die ID-Variable und Jahresvariable als Tabelle in Word kopieren, die Jahresvariable brauchst du dann aber zweimal. Anschließend würde ich mit einem Makro aus einer Spalte die Dezimalstellen löschen, aus der anderen Spalte die Werte vor dem Komma durch Null ersetzen. Dann wieder in SPSS zurückkopieren und darauf achten, dass bei der Zuweisung der Fälle nichts durcheinandergekommen ist, daher auch die IDVariable als ID2 in den Datensatz kopieren. Dann kannst du schauen, ob die ID-Nummern pro Fall übereinstimmen. Das kannst du mit folgender Syntax machen:
compute id_tmp = id-id2.
fre id_tmp.
Wenn dann Werte ungleich 0 herauskommen, ist etwas schiefgelaufen.
Überlege dir, ob du im Datenhandling so sicher bist, dass dir beim hinundherkopieren kein Fehler unterläuft, außerdem benötigst du ein paar Kenntnisse in VBA-Programmierung.
Daher, wenn irgendmöglich bleibe beim Dezimalsystem.
Viele Grüße
Volker
-
- Beiträge: 67
- Registriert: 17.01.2007, 18:15
Hallo Fricke,
du hattest vor ein paar Wochen die Frage gestellt, wie man Altersangaben mit Dezimale in Jahre und Monate umrechenen kann. Z.B. bedeutet 2,83 zwei Jahre und 10 Monate. Ich bin vor ein paar Tagen auf eine einfache Lösung gestoßen. Falls du das in zwischen nicht mehr benötigst, hast du zumindest den Lösungsweg. Vielleicht kannst du den irgendwann mal gebrauchen.
****** Anfang Setup *********.
* Dezimale abschneiden mit der Funktion "trunc" ****.
COMPUTE Jahr = TRUNC(Alter).
exe.
* Berechnen der Dezimalwerte und umrechnen in Monate **.
compute Monat = (Alter-Jahr)*12.
COMPUTE Monat2 = TRUNC(Monat).
fre Jahr Monat Monat2.
****** Ende Setup *********.
Gruß, Volker
du hattest vor ein paar Wochen die Frage gestellt, wie man Altersangaben mit Dezimale in Jahre und Monate umrechenen kann. Z.B. bedeutet 2,83 zwei Jahre und 10 Monate. Ich bin vor ein paar Tagen auf eine einfache Lösung gestoßen. Falls du das in zwischen nicht mehr benötigst, hast du zumindest den Lösungsweg. Vielleicht kannst du den irgendwann mal gebrauchen.
****** Anfang Setup *********.
* Dezimale abschneiden mit der Funktion "trunc" ****.
COMPUTE Jahr = TRUNC(Alter).
exe.
* Berechnen der Dezimalwerte und umrechnen in Monate **.
compute Monat = (Alter-Jahr)*12.
COMPUTE Monat2 = TRUNC(Monat).
fre Jahr Monat Monat2.
****** Ende Setup *********.
Gruß, Volker
-
- Beiträge: 3
- Registriert: 15.06.2009, 17:28
Ich habe auch mal eine ähnliche Frage. Im Unterschied zu den anderen, würde ich gerne eine Variable berechnen, die die Differenz zwischen dem heutigen Datum / Jahr und dem Geburtstag berechnet --> quasi das aktuelle Alter...wie geht das?? krieg das irgendwie nicht hin...
kann mir jemand helfen? das wär super!! vielen dank im vorraus!!
achso: meine version ist spss 16.0
kann mir jemand helfen? das wär super!! vielen dank im vorraus!!
achso: meine version ist spss 16.0
-
- Beiträge: 114
- Registriert: 30.03.2009, 09:39
Hallo Tike,
in welcher Form liegen denn Geburtstag und heutiges Datum bei Dir in SPSS vor?
Falls Du jew. eine eigene Variable des Formats "Datum" hast, kannst Du es beispielsweise mit der Funktion DATEDIFF versuchen (siehe dazu auch mal in der SPSS-Hilfe nach).
Wenn Du beispielsweise nur das Alter in Jahren berechnen willst, sähe die Syntax in etwa so aus:
Grüße,
georggraph
in welcher Form liegen denn Geburtstag und heutiges Datum bei Dir in SPSS vor?
Falls Du jew. eine eigene Variable des Formats "Datum" hast, kannst Du es beispielsweise mit der Funktion DATEDIFF versuchen (siehe dazu auch mal in der SPSS-Hilfe nach).
Wenn Du beispielsweise nur das Alter in Jahren berechnen willst, sähe die Syntax in etwa so aus:
Code: Alles auswählen
COMPUTE Alter = DATEDIFF(DatumHeute,DatumGeburtstag,"years").
EXE.
georggraph
-
- Beiträge: 3
- Registriert: 15.06.2009, 17:28
-
- Beiträge: 1
- Registriert: 15.06.2009, 15:57
Hallo,
ich hab mit Begeisterung Eure Erläuterungen zur Altersberechnung durchgelesen.
Dadurch konnte ich auch das Alter in Jahren berechnen und als neue Variable einfügen.
Allerdings bräuchte ich das Alter in folgender Ausführung "Jahre;Monate". Z.B. 10 Jahre und 3 Monate wäre dann 10;3
Wie bekomme ich das hin???????
Gruß
chakla_girl
ich hab mit Begeisterung Eure Erläuterungen zur Altersberechnung durchgelesen.
Dadurch konnte ich auch das Alter in Jahren berechnen und als neue Variable einfügen.
Allerdings bräuchte ich das Alter in folgender Ausführung "Jahre;Monate". Z.B. 10 Jahre und 3 Monate wäre dann 10;3
Wie bekomme ich das hin???????
Gruß
chakla_girl