Perché la funzione as.Date in R converte gli anni che inserisco nell'anno in corso 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
In base a strptime, riferito da as.Date, dovresti usare la Y maiuscola per anni a 4 cifre:
%y
Anno 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à '.
%Y
Anno con secolo. [...]