Si un vecteur de date a des années à deux chiffres, mdy()
transforme les années entre 00 et 68 en années et années du 21e siècle entre 69 et 99 ans et jusqu'au 20e siècle. Par exemple:Existe-t-il un moyen plus élégant de convertir les années à deux chiffres en années à quatre chiffres avec lubridate?
library(lubridate)
mdy(c("1/2/54","1/2/68","1/2/69","1/2/99","1/2/04"))
donne le résultat suivant:
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"
Je peux résoudre ce problème après le fait en soustrayant 100 des dates incorrectes pour transformer 2054 et 2068 en 1954 et 1968. Mais est-il Méthode plus élégante et moins sujette aux erreurs pour analyser les dates à deux chiffres afin qu'elles soient traitées correctement dans le processus d'analyse lui-même?
Mise à jour: Après @JoshuaUlrich me montra strptime
je trouve this question, qui traite d'une question similaire à la mienne, mais en utilisant la base R.
Il semble comme une belle addition à la gestion des dates en R serait un moyen de gérer les seuils de sélection de siècle pour les dates à deux chiffres dans les fonctions d'analyse de date.
Techniquement, les dates sont analysées correctement, puisque la documentation ('?strptime') indique que: "En entrée, les valeurs 00 à 68 sont préfixées par 20 et 69 à 99 par 19 - c'est le comportement spécifié par les normes POSIX 2004 et 2008". '? parse_date' vous indique brièvement'? strptime' pour les formats. –
J'aurais dû être plus précis. Je ne voulais pas laisser entendre que «lubridate» a un bug, mais simplement qu'en raison de l'ambiguïté des années à deux chiffres, le comportement naturel du paquet résulte en des années à quatre chiffres incorrectes («incorrect» dans le sens de «pas le résultat souhaité ») dans certaines situations relativement courantes. J'espérais qu'il y avait un moyen au sein de 'lubridate' de spécifier une valeur de« switch »ou de« cutoff »qui donnerait le siècle désiré pour des plages données de dates à deux chiffres. – eipi10
Suggère que vous soumettiez une demande de fonctionnalité à la page github de lubridate. – Spacedman