Warum konvertiert die as.Date-Funktion in R die Jahre, die ich in das aktuelle Jahr 2020 eingebe?

Aug 16 2020

Ich habe einige Daten in einem Datenrahmen, und wenn ich as.Date () verwende, um sie in Daten zu konvertieren, werden die Jahre in 2020 konvertiert, was nicht wirklich gültig ist, da die Datei nur Daten bis 2018 enthält.

Was ich bisher habe:

> fechadeinsc1[2]
[1] "2020-08-15"

> class(fechadeinsc1)
[1] "Date"

> fechainsc[2]
[1] "2017/99/99"

> class(fechainsc)
[1] "character"

Wie Sie sehen können, wurde fechadeinsc1 in ein Datum konvertiert und fechainsc ist der ursprüngliche Datenrahmen, dessen Elemente Zeichen sind. "fechadeinsc1" sollte das gleiche Jahr geben, nicht wahr? Auch wenn Tage und Monate nicht gültig sind.

Ein weiteres Beispiel :

> fechadenac1[2]
[1] "2020-12-31"

> class(fechadenac1)
[1] "Date"

> fechanac[2]
[1] "12/31/2016"

> class(fechanac)
[1] "character"

Wieder ändert sich das Jahr.

Mein Code :

fechanac <- dat$fecha_nac fechainsc <- dat$fecha_insc

fechadeinsc1 <- as.Date(fechainsc,tryFormats =c("%d/%m/%y","%m/%d/%y","%y","%d%m%y","%m%d%y"))
fechadenac1 <- as.Date(fechanac,tryFormats =c("%d/%m/%y","%m/%d/%y","%y","%d%m%y","%m%d%y"))

"dat" ist der ursprüngliche Datenrahmen, der Informationen zu Neugeborenen enthält, die 2016 und 2017 in Ecuador registriert wurden. Wenn jemand die ursprüngliche CSV-Datei haben möchte, kontaktieren Sie mich bitte.

Antworten

1 tevemadar Aug 16 2020 at 01:39

Basierend auf strptime, bezogen auf as.Date, sollten Sie Großbuchstaben Y für 4-stellige Jahre verwenden:

%yJahr ohne Jahrhundert (00-99). Bei der Eingabe werden den Werten 00 bis 68 20 und 69 bis 99 19 vorangestellt - das ist das Verhalten, das in den POSIX-Standards 2004 und 2008 festgelegt ist. Sie sagen jedoch auch: „Es wird erwartet, dass in einer zukünftigen Version das Standardjahrhundert abgeleitet wird ab einem zweistelligen Jahr wird sich ändern '.

%YJahr mit Jahrhundert. [...]