เหตุใดฟังก์ชัน as.Date ใน R จึงแปลงปีที่ฉันเข้าสู่ปีปัจจุบัน 2020

Aug 16 2020

ฉันมีวันที่บางวันในดาต้าเฟรมและเมื่อฉันใช้เป็นวันที่ () เพื่อแปลงเป็นวันที่ปีจะแปลงเป็นปี 2020 ซึ่งไม่ถูกต้องจริง ๆ เพราะไฟล์มีข้อมูลถึงปี 2018 เท่านั้น

สิ่งที่ฉันมีจนถึงตอนนี้:

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

> class(fechadeinsc1)
[1] "Date"

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

> class(fechainsc)
[1] "character"

อย่างที่คุณเห็น fechadeinsc1 ถูกแปลงเป็นวันที่และ fechainsc คือ dataframe ดั้งเดิมที่องค์ประกอบเป็นอักขระ "fechadeinsc1" น่าจะให้ปีเดียวกันมั้ย? แม้ว่าวันและเดือนจะไม่ถูกต้อง

อีกตัวอย่าง :

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

> class(fechadenac1)
[1] "Date"

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

> class(fechanac)
[1] "character"

อีกครั้งปีมีการเปลี่ยนแปลง

รหัสของฉัน :

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" คือ dataframe ดั้งเดิมซึ่งมีข้อมูลเกี่ยวกับทารกแรกเกิดที่จดทะเบียนในปี 2016 และ 2017 ในเอกวาดอร์หากใครต้องการไฟล์. csv ต้นฉบับโปรดติดต่อฉัน

คำตอบ

1 tevemadar Aug 16 2020 at 01:39

ตามที่strptimeอ้างถึงas.Dateคุณควรใช้ตัวพิมพ์ใหญ่ Y สำหรับปี 4 หลัก:

%yปีที่ไม่มีศตวรรษ (00--99) ในการป้อนข้อมูลค่า 00 ถึง 68 จะนำหน้าด้วย 20 และ 69 ถึง 99 โดย 19 ซึ่งเป็นลักษณะการทำงานที่ระบุโดยมาตรฐาน POSIX ปี 2004 และ 2008 แต่พวกเขายังกล่าวว่า 'คาดว่าในอนาคตจะมีการอนุมานศตวรรษเริ่มต้น จากปี 2 หลักจะเปลี่ยนไป '

%Yปีกับศตวรรษ. [... ]