2017-12-18 348 views
0

我嘗試將以下字符向量轉換爲日期類。將字符日期轉換爲R包lubridate無法解析

> library(lubridate) 
> unemployment_rate$month 

[1] "2017-1-1" "2017-2-1" "2017-3-1" "2017-4-1" "2017-5-1" "2017-6-1" "2017-7-1" "2017-8-1" "2017-9-1" "2017-10-1" "2017-11-1" "2017-12-1" 
[13] "2016-1-1" "2016-2-1" "2016-3-1" "2016-4-1" "2016-5-1" "2016-6-1" "2016-7-1" "2016-8-1" "2016-9-1" "2016-10-1" "2016-11-1" "2016-12-1" 

但是當我嘗試將日期轉換與lubridate包我得到下面的結果,並警告消息:

> unemployment_rate$month <- ymd(unemployment_rate$month, "%Y-%m-%d") 

Error in `$<-.data.frame`(`*tmp*`, "month", value = c(17167, 17198, 17226, : 
    replacement has 25 rows, data has 24 
In addition: Warning message: 
1 failed to parse. 

我不明白爲什麼replacement has 25 rows而數據具有actualy 24行(兩年),哪個日期又如此不同,1 failed to parse.

也許有用的東西就知道了,我創建了原本必須創建(concatonated和month.abb)從month矢量自己:兩列格式化過月份列「簡」,‘二月’等,每年列格式化」 2016" 和‘2017’。

+2

爲什麼你需要提格式'「% y-%m-%d「'在ymd()內? – Sotos

+0

Man ..認爲這是必要的,謝謝。 f我想重新格式化我可以使用這種格式? – Tdebeus

+0

當然。 'format(ymd(),format ='%b%Y')'例如應該可以正常工作 – Sotos

回答

2

你有長度24的載體,但你要添加"%Y-%m-%d"爲25日。ymd()無法解析"%Y-%m-%d"

> lubridate::ymd("2017-1-1") 
[1] "2017-01-01" 
> lubridate::ymd("2017-1-1", "%Y-%m-%d") 
[1] "2017-01-01" NA   
Warning message: 
1 failed to parse.