Tại sao hàm as.Date trong R chuyển đổi năm tôi nhập vào năm hiện tại 2020?

Aug 16 2020

Tôi có một số ngày trong khung dữ liệu và khi tôi sử dụng as.Date () để chuyển đổi chúng thành ngày tháng, năm chuyển đổi thành năm 2020, điều này không thực sự hợp lệ vì tệp chỉ có dữ liệu đến năm 2018.

Những gì tôi có cho đến nay:

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

> class(fechadeinsc1)
[1] "Date"

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

> class(fechainsc)
[1] "character"

Như bạn có thể thấy, fechadeinsc1 đã được chuyển đổi thành ngày tháng và fechainsc là khung dữ liệu ban đầu có các phần tử là ký tự. "fechadeinsc1" nên cho cùng một năm, phải không? Mặc dù ngày và tháng không hợp lệ.

Một ví dụ khác :

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

> class(fechadenac1)
[1] "Date"

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

> class(fechanac)
[1] "character"

Một lần nữa, năm thay đổi.

Mã của tôi :

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" là dataframe gốc chứa thông tin về trẻ sơ sinh đăng ký năm 2016 và 2017 tại Ecuador, nếu ai muốn có file .csv gốc thì liên hệ với mình.

Trả lời

1 tevemadar Aug 16 2020 at 01:39

Dựa trên strptime, được tham chiếu từ as.Date, bạn nên sử dụng chữ hoa Y cho các năm có 4 chữ số:

%yNăm không có thế kỷ (00--99). Trên đầu vào, các giá trị 00 đến 68 được bắt đầu bằng 20 và 69 đến 99 bởi 19 - đó là hành vi được chỉ định bởi các tiêu chuẩn POSIX năm 2004 và 2008, nhưng chúng cũng nói rằng 'dự kiến ​​rằng trong một phiên bản tương lai, thế kỷ mặc định được suy ra từ năm 2 chữ số sẽ thay đổi '.

%YNăm với thế kỷ. [...]