¿Por qué la función as.Date en R convierte los años que ingresé en el año actual 2020?

Aug 16 2020

Tengo algunas fechas en un marco de datos, y cuando uso as.Date () para convertirlas en fechas, los años se convierten en 2020, lo que no es realmente válido porque el archivo solo tiene datos hasta 2018.

Lo que tengo hasta ahora:

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

> class(fechadeinsc1)
[1] "Date"

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

> class(fechainsc)
[1] "character"

Como puede ver, fechadeinsc1 se convirtió en una fecha y fechainsc es el marco de datos original cuyos elementos son caracteres. "fechadeinsc1" debería dar el mismo año, ¿no? Aunque los días y los meses no son válidos.

Otro ejemplo :

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

> class(fechadenac1)
[1] "Date"

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

> class(fechanac)
[1] "character"

Nuevamente, el año cambia.

Mi codigo :

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" es el marco de datos original que contiene información sobre recién nacidos registrados en 2016 y 2017 en Ecuador, si alguien quiere el archivo .csv original por favor contácteme.

Respuestas

1 tevemadar Aug 16 2020 at 01:39

Según strptime, referido desde as.Date, debe usar Y mayúscula para los años de 4 dígitos:

%yAño sin siglo (00-99). En la entrada, los valores de 00 a 68 tienen el prefijo 20 y de 69 a 99 de 19; ese es el comportamiento especificado por los estándares POSIX de 2004 y 2008, pero también dicen 'se espera que en una versión futura se infiera el siglo predeterminado de un año de 2 dígitos cambiará '.

%YAño con siglo. [...]