Mengapa fungsi as.Date di R mengubah tahun yang saya masuki menjadi tahun 2020 saat ini?

Aug 16 2020

Saya memiliki beberapa tanggal dalam kerangka data, dan ketika saya menggunakan as.Date () untuk mengubahnya menjadi tanggal, tahun-tahun diubah menjadi 2020, yang sebenarnya tidak valid karena file tersebut hanya memiliki data hingga 2018.

Apa yang saya miliki sejauh ini:

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

> class(fechadeinsc1)
[1] "Date"

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

> class(fechainsc)
[1] "character"

Seperti yang Anda lihat, fechadeinsc1 diubah menjadi tanggal dan fechainsc adalah kerangka data asli yang elemennya adalah karakter. "fechadeinsc1" seharusnya memberikan tahun yang sama, bukan? Padahal hari dan bulan tidak valid.

Contoh lain :

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

> class(fechadenac1)
[1] "Date"

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

> class(fechanac)
[1] "character"

Sekali lagi, tahun berubah.

Kode saya :

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" adalah dataframe asli yang berisi informasi tentang bayi baru lahir yang terdaftar pada tahun 2016 dan 2017 di Ekuador, jika ada yang menginginkan file .csv asli, silakan hubungi saya.

Jawaban

1 tevemadar Aug 16 2020 at 01:39

Berdasarkan strptimerujukan dari as.Date, Anda harus menggunakan huruf besar Y untuk tahun 4 digit:

%yTahun tanpa abad (00--99). Pada input, nilai 00 hingga 68 diawali dengan 20 dan 69 hingga 99 oleh 19 - itulah perilaku yang ditentukan oleh standar POSIX 2004 dan 2008, tetapi mereka juga mengatakan 'diharapkan dalam versi mendatang abad default disimpulkan dari tahun 2 digit akan berubah '.

%YTahun demi abad. [...]