R将字符串日期(例如"2014年10月1日")转换为日期格式

A.G*_*.GH 1 r date date-conversion

如何将日期字符串向量转换c("October 1, 2014", "June 14, 2014")为R Date格式的向量?

我有一个data.frame,其中一列是上述格式的日期字符串.

我很感激你的帮助.

谢谢!

Ste*_*pré 8

尝试:

v <- c("October 1, 2014", "June 14, 2014") 
as.Date(v, "%B %d,%Y")
Run Code Online (Sandbox Code Playgroud)

这使:

#[1] "2014-10-01" "2014-06-14"
Run Code Online (Sandbox Code Playgroud)

要么

strptime(v, "%B %d,%Y")
Run Code Online (Sandbox Code Playgroud)

这使:

#[1] "2014-10-01 EDT" "2014-06-14 EDT"
Run Code Online (Sandbox Code Playgroud)

基准

largev <- rep(v, 10e5)

library(microbenchmark)
microbenchmark(
  as.Date = as.Date(largev, "%B %d,%Y"),
  strptime = strptime(largev, "%B %d,%Y"),
  times = 10
)
Run Code Online (Sandbox Code Playgroud)

这使:

#Unit: seconds
#     expr      min       lq     mean   median       uq      max neval cld
#  as.Date 1.479891 1.480671 1.527838 1.483158 1.489222 1.863777    10  a 
# strptime 2.177625 2.183247 2.237732 2.255282 2.268452 2.272537    10   b
Run Code Online (Sandbox Code Playgroud)

正如@cory在评论中提到的,用于?strptime获取格式代码:

  • %B当前语言环境中的完整月份名称.(也匹配输入上的缩写名称.)
  • %d作为十进制数字的月份日期(01-31).
  • %Y世纪.请注意,虽然原始公历中没有零,但ISO 8601:2004将其定义为有效(解释为1BC)

  • 也是'strptime(v,"%B%d,%Y")` (2认同)