Seite 1 von 1

Ermittlung des Alters anhand von Datum

Verfasst: Di Jan 01, 2019 7:46 pm
von Chrispe
Guten Abend liebe Community,


mein erster Post und gleich eine Frage - vll ein wenig Schande auf mein Haupt, doch schließlich ist ein Forum ja auch für Fragen da :)

Leider habe ich bei einer aktuellen Umfrage von mir einen kleinen Fehler gemacht, und anstelle des Alters das Geburtsdatum abgefragt... merkwürdigerweise dachte ich, dass ich daraus ja schnell das Alter ermitteln kann, doch raubt mir unser geliebtes "R" nun den Verstand...


Folgendes Zeigt mir die Spalte "P1" an:

Code: Alles auswählen

[1] "1989-09-20 00:00:00"
... und noch viele weitere Werte

Natürlich würde ich mir nichts inniger wünschen, als dass dort "29" stünde (als Alter). Gerne auch in der nächsten Spalte..

Aktuell bin ich soweit, dass ich wenigstens das exakte Alter in Tagen habe.. :roll: :lol:

Code: Alles auswählen

as.Date(P1[1-53])-as.Date(Sys.time())
Time differences in days
 [1] -10695 ....und viele weitere
Doch wie bekomme ich dies nun entweder in eine neue Spalte (und am besten in Jahren) oder ersetzte am besten das Datum durch das aktuelle Alter?


Vielen Dank im Voraus für eure Unterstützung! :)

vG

Chrispe

Re: Ermittlung des Alters anhand von Datum

Verfasst: Mi Jan 02, 2019 7:51 am
von jogo
Hallo Chrispe,

willkommen im Forum!
Reicht Dir auch eine grobe Näherung?

Code: Alles auswählen

P1 <- "1989-09-20 00:00:00"
Alter <- 2018 - as.numeric(substr(P1, 1, 4))
Gruß, Jörg

Re: Ermittlung des Alters anhand von Datum

Verfasst: Mi Jan 02, 2019 10:26 am
von Athomas
Durch googeln findet man in https://stackoverflow.com/questions/361 ... -ages-in-r diese solide Lösung:

Code: Alles auswählen

age = function(from, to) {
  from_lt = as.POSIXlt(from)
  to_lt = as.POSIXlt(to)
  
  age = to_lt$year - from_lt$year
  
  ifelse(to_lt$mon < from_lt$mon |
           (to_lt$mon == from_lt$mon & to_lt$mday < from_lt$mday),
         age - 1, age)
}

Datumsstring <- c("1972-01-01 00:00:00", "1981-12-22 00:00:00","1990-06-23 00:00:00","1999-09-24 00:00:00")
heute        <- Sys.Date()
Alter        <- age(Datumsstring, heute)