Pourquoi la fonction as.Date dans R convertit-elle les années que j'entre dans l'année en cours 2020?
J'ai des dates dans un dataframe, et quand j'utilise as.Date () pour les convertir en dates, les années sont converties en 2020, ce qui n'est pas vraiment valide car le fichier ne contient que des données jusqu'en 2018.
Ce que j'ai jusqu'à présent:
> fechadeinsc1[2]
[1] "2020-08-15"
> class(fechadeinsc1)
[1] "Date"
> fechainsc[2]
[1] "2017/99/99"
> class(fechainsc)
[1] "character"
Comme vous pouvez le voir, fechadeinsc1 a été converti en date et fechainsc est le dataframe d'origine dont les éléments sont des caractères. "fechadeinsc1" devrait donner la même année, n'est-ce pas? Même si les jours et les mois ne sont pas valides.
Un autre exemple :
> fechadenac1[2]
[1] "2020-12-31"
> class(fechadenac1)
[1] "Date"
> fechanac[2]
[1] "12/31/2016"
> class(fechanac)
[1] "character"
Encore une fois, l'année change.
Mon 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" est le dataframe original qui contient des informations sur les nouveau-nés enregistrés en 2016 et 2017 en Equateur, si quelqu'un veut le fichier .csv original, veuillez me contacter.
Réponses
Sur la base de strptime, référé de as.Date, vous devez utiliser Y majuscule pour les années à 4 chiffres:
%y
Année sans siècle (00-99). 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 de 2004 et 2008, mais elles disent aussi `` il est prévu que dans une version future, le siècle par défaut soit déduit à partir d'une année à 2 chiffres changera ».
%Y
Année avec siècle. [...]