我希望在R中转换日期的字符串向量,如下所示:
[1] "March 21, 2016" "March 9, 2016" "March 1, 2016" "February 29, 2016" "January 26, 2016" "December 15, 2015" "December 14, 2015"
[8] "November 9, 2015" "October 13, 2015" "August 26, 2015" "August 10, 2015"
到这样的日期向量:
[1] "2016-03-21" "2016-03-09"
.....
我已经尝试过使用以下方法解析字符串,但没有成功。
library(lubridate)
format(mdy(dates),"%Y-%m-%d")
并使用:
as.Date(dates, "%Y-%m-%d")
在这两种情况下,结果都是NA字符串。 怎么了?
答案 0 :(得分:3)
您没有使用正确的Date
值。试试这个:
as.Date(dates, "%B %d, %Y")
答案 1 :(得分:2)
d<-"March 21, 2016"
parse_date_time(d, orders="%B %d, %Y")
答案 2 :(得分:2)
问题是您的locale
期望月份的名称是意大利语。由于它们在您的对象中是英语,因此不会解析日期。例如,这应该适合你(幸运的是我也是意大利人):
dates <- "Marzo, 21 2016"
library(lubridate)
format(mdy(dates),"%Y-%m-%d")
#[1] "2016-03-21"
要解析日期,您必须更改区域设置:
#register the old locale to set it back
OL <- Sys.getlocale("LC_TIME")
#set the new locale
Sys.setlocale("LC_TIME","C")
dates <- "March, 21 2016"
format(mdy(dates),"%Y-%m-%d")
#[1] "2016-03-21"
#Change the locale back to the old value
Sys.setlocale("LC_TIME", OL)