¿Por qué la función as.Date en R convierte los años que ingresé en el año actual 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
Según strptime, referido desde as.Date, debe usar Y mayúscula para los años de 4 dígitos:
%y
Añ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á '.
%Y
Año con siglo. [...]