将字符日期转换为R包lubridate无法解析

问题描述:

我尝试将以下字符向量转换为日期类。将字符日期转换为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

你有长度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.