Perché la funzione as.Date in R converte gli anni che inserisco nell'anno in corso 2020?

Aug 16 2020

Ho alcune date in un dataframe e quando uso as.Date () per convertirle in date, gli anni vengono convertiti in 2020, il che non è realmente valido perché il file contiene solo dati fino al 2018.

Quello che ho finora:

> fechadeinsc1[2]
[1] "2020-08-15"

> class(fechadeinsc1)
[1] "Date"

> fechainsc[2]
[1] "2017/99/99"

> class(fechainsc)
[1] "character"

Come puoi vedere, fechadeinsc1 è stato convertito in una data e fechainsc è il dataframe originale i cui elementi sono caratteri. "fechadeinsc1" dovrebbe dare lo stesso anno, no? Anche se giorni e mesi non sono validi.

Un altro esempio :

> fechadenac1[2]
[1] "2020-12-31"

> class(fechadenac1)
[1] "Date"

> fechanac[2]
[1] "12/31/2016"

> class(fechanac)
[1] "character"

Di nuovo, l'anno cambia.

Il mio codice :

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" è il dataframe originale che contiene informazioni sui neonati registrati nel 2016 e nel 2017 in Ecuador, se qualcuno vuole il file .csv originale contattatemi.

Risposte

1 tevemadar Aug 16 2020 at 01:39

In base a strptime, riferito da as.Date, dovresti usare la Y maiuscola per anni a 4 cifre:

%yAnno senza secolo (00--99). In input, i valori da 00 a 68 sono preceduti da 20 e da 69 a 99 da 19 - questo è il comportamento specificato dagli standard POSIX del 2004 e del 2008, ma dicono anche 'si prevede che in una versione futura il secolo predefinito sia stato dedotto da un anno a 2 cifre cambierà '.

%YAnno con secolo. [...]