Ermittlung des Alters anhand von Datum

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Chrispe
Beiträge: 1
Registriert: Di Jan 01, 2019 7:37 pm

Ermittlung des Alters anhand von Datum

Beitrag von Chrispe » Di Jan 01, 2019 7:46 pm

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

jogo
Beiträge: 1308
Registriert: Fr Okt 07, 2016 8:25 am

Re: Ermittlung des Alters anhand von Datum

Beitrag von jogo » Mi Jan 02, 2019 7:51 am

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

Athomas
Beiträge: 176
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Ermittlung des Alters anhand von Datum

Beitrag von Athomas » Mi Jan 02, 2019 10:26 am

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)
"Man kann richtige Fragen stellen und trotzdem falsche Antworten geben" (A. Nahles, 2019)

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste