将日期从格式如:“%B %d, %Y”解析为格式:R 中的“%Y-%m-%d”
Parse a date from a format like: "%B %d, %Y" to a format: "%Y-%m-%d" in R
我想在 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 字符串。
怎么了?
您没有使用正确的 Date
值。试试这个:
as.Date(dates, "%B %d, %Y")
d<-"March 21, 2016"
parse_date_time(d, orders="%B %d, %Y")
问题是您的 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)
我想在 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 字符串。 怎么了?
您没有使用正确的 Date
值。试试这个:
as.Date(dates, "%B %d, %Y")
d<-"March 21, 2016"
parse_date_time(d, orders="%B %d, %Y")
问题是您的 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)