Por que a função as.Date em R converte os anos que eu insiro no ano atual de 2020?
Eu tenho algumas datas em um dataframe e quando eu uso as.Date () para convertê-las em datas, os anos são convertidos em 2020, o que não é realmente válido porque o arquivo só tem dados até 2018.
O que eu tenho até agora:
> fechadeinsc1[2]
[1] "2020-08-15"
> class(fechadeinsc1)
[1] "Date"
> fechainsc[2]
[1] "2017/99/99"
> class(fechainsc)
[1] "character"
Como você pode ver, fechadeinsc1 foi convertido em uma data e fechainsc é o dataframe original cujos elementos são caracteres. "fechadeinsc1" deve dar o mesmo ano, não é? Mesmo que dias e meses não sejam válidos.
Outro exemplo :
> fechadenac1[2]
[1] "2020-12-31"
> class(fechadenac1)
[1] "Date"
> fechanac[2]
[1] "12/31/2016"
> class(fechanac)
[1] "character"
Mais uma vez, o ano muda.
Meu código :
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" é o dataframe original que contém informações sobre os recém-nascidos registrados em 2016 e 2017 no Equador, se alguém quiser o arquivo .csv original, entre em contato comigo.
Respostas
Com base em strptime, referido de as.Date, você deve usar Y maiúsculo para anos de 4 dígitos:
%y
Ano sem século (00--99). Na entrada, os valores de 00 a 68 são prefixados por 20 e 69 a 99 por 19 - esse é o comportamento especificado pelos padrões POSIX de 2004 e 2008, mas eles também dizem 'espera-se que em uma versão futura o século padrão inferido de um ano de 2 dígitos mudará '.
%Y
Ano com século. [...]