Mengapa fungsi as.Date di R mengubah tahun yang saya masuki menjadi tahun 2020 saat ini?
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
Berdasarkan strptimerujukan dari as.Date, Anda harus menggunakan huruf besar Y untuk tahun 4 digit:
%y
Tahun 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 '.
%Y
Tahun demi abad. [...]