如何将c("October 1, 2014", "June 14, 2014")
之类的日期字符串向量转换为R Date
格式的向量?
我有一个data.frame,其中一列是上述格式的日期字符串。
感谢您的帮助。
谢谢!
答案 0 :(得分:8)
尝试:
v <- c("October 1, 2014", "June 14, 2014")
as.Date(v, "%B %d,%Y")
给出了:
#[1] "2014-10-01" "2014-06-14"
或
strptime(v, "%B %d,%Y")
给出了:
#[1] "2014-10-01 EDT" "2014-06-14 EDT"
<强>基准强>
largev <- rep(v, 10e5)
library(microbenchmark)
microbenchmark(
as.Date = as.Date(largev, "%B %d,%Y"),
strptime = strptime(largev, "%B %d,%Y"),
times = 10
)
给出了:
#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
正如@cory在评论中提到的那样,使用?strptime
来获取格式代码:
- %B 当前区域设置中的完整月份名称。 (也与输入中的缩写名称相匹配。)
- %d 作为十进制数字的月份日期(01-31)。
- %Y 与世纪相关的年份。请注意,虽然原始公历中没有零,但ISO 8601:2004将其定义为有效(解释为1BC)