Tôi nhận được kết quả là tôi không hiểu trong R.Tại sao phân tích cú pháp "% Y-% m" bằng cách sử dụng strptime trong R cho kết quả NA, nhưng "% Y-% m-% d" hoạt động?
Nếu tôi sử dụng strptime
với năm và ngày được định dạng% Y-% m (như "2009-12"), tôi nhận được kết quả NA. Nhưng nếu tôi thêm một ngày, như "2009-12-01", và thay đổi chuỗi định dạng cho phù hợp, tôi sẽ nhận được kết quả. Ví dụ:
> strptime("2009-12",format="%Y-%m")
[1] NA
> strptime("2009-12-03",format="%Y-%m-%d")
[1] "2009-12-03"
Tại sao lại như vậy?
Cập nhật: Điều tôi tò mò về là lý do strptime không phân tích một năm và một tháng, và lý do nó có vẻ lạ rằng nó sẽ không làm như vậy là vì nó không phân tích một năm chỉ, hoặc một năm và một ngày:
> strptime("2009",format="%Y") # year only. Works. Uses current month and day as defaults.
[1] "2009-12-02"
> strptime("2009-03",format="%Y-%d") # year and day. Works. Uses current month as default.
[1] "2009-12-03"
> strptime("2009-03",format="%Y-%m") # year and month. Doesn't work. ?
[1] NA
Update để giải thích lý do tại sao đây không phải là một bản sao Các bản sao có thể được hỏi một vài năm sau khi câu hỏi này và nó là có liên quan với một API riêng biệt trong R
: chức năng asDate
. Câu hỏi này là về một sự gian lận của hàm strptime
có nghĩa là R
3.1.3 vẫn được áp dụng.
Bởi vì ngày có những ngày? Bạn mong đợi nó ra sao? – hadley
Bạn có muốn là ngày trong năm không? Nếu vậy, hãy thử "% j". –
Tôi đã hy vọng nó sẽ sử dụng ngày hiện tại làm mặc định, cách nó sẽ làm nếu bạn làm strptime ("2009", format = "% Y"). Điều này dẫn đến "2009-12-01". – bantic