Si un vector de fecha tiene años de dos dígitos, mdy()
convierte años entre 00 y 68 en años del siglo XXI y años entre 69 y 99 en años del siglo XX. Por ejemplo:¿Existe alguna manera más elegante de convertir años de dos dígitos a años de cuatro dígitos con lubridate?
library(lubridate)
mdy(c("1/2/54","1/2/68","1/2/69","1/2/99","1/2/04"))
da el siguiente resultado:
Multiple format matches with 5 successes: %m/%d/%y, %m/%d/%Y.
Using date format %m/%d/%y.
[1] "2054-01-02 UTC" "2068-01-02 UTC" "1969-01-02 UTC" "1999-01-02 UTC" "2004-01-02 UTC"
puedo solucionar esto después del hecho restando 100 de las fechas incorrectas para convertir 2054 y 2068 en 1954 y 1968. Pero, ¿existe una ¿Es un método más elegante y menos propenso a errores de analizar las fechas de dos dígitos para que se manejen correctamente en el proceso de análisis?
Actualización: Después de @JoshuaUlrich me señaló a strptime
He encontrado this question, que trata de un problema similar a la mía, pero utilizando R. base de
Parece una buena adición a la manipulación de la fecha en I sería alguna forma de manejar los cortes de selección del siglo para fechas de dos dígitos dentro de las funciones de análisis de fecha.
Técnicamente, las fechas se están analizando correctamente, ya que la documentación ('?strptime') establece que: "En la entrada, los valores 00 a 68 están prefijados por 20 y 69 por 99 por 19, ese es el comportamiento especificado por los estándares POSIX de 2004 y 2008". '? parse_date' le dice brevemente que vea'? strptime' para los formatos. –
Debería haber sido más preciso. No quise dar a entender que 'lubridate' tiene un error, sino simplemente que debido a la ambigüedad de los años de dos dígitos, el comportamiento natural del paquete resulta en años incorrectos de cuatro dígitos (" incorrecto "en el sentido de" no el resultado deseado ") bajo algunas situaciones relativamente comunes. Esperaba que hubiera alguna forma dentro de 'lubridate' para especificar un valor de" cambio "o" límite "que dará el siglo deseado para intervalos dados de fechas de dos dígitos. – eipi10
Sugiere que envíe una solicitud de función a la página de lubithtete github. – Spacedman