Por que a função as.Date em R converte os anos que eu insiro no ano atual de 2020?

Aug 16 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

1 tevemadar Aug 16 2020 at 01:39

Com base em strptime, referido de as.Date, você deve usar Y maiúsculo para anos de 4 dígitos:

%yAno 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á '.

%YAno com século. [...]