用R中的strptime()从字符串中提取时间,返回NA

时间:2014-02-05 18:11:59

标签: regex r date time strptime

我试图从R中的字符串中提取出时间,并且无法停止获取NA作为结果。我已经尝试了正则表达式标签的多种变体,但似乎无法解决这个简单的问题。任何帮助/澄清表示赞赏。

以下是我的代码示例:

> x
[1] "2/7/2013 7:43"
> class(x)
[1] "character"
> z <- strptime(x, "%H:%M")
> z
[1] NA

2 个答案:

答案 0 :(得分:13)

R不知道你的字符串是日期时间。所以先做一个:

y <- strptime(x, format='%m/%d/%Y %H:%M')

如果你想要获得日期,你可以这样做:

strptime(x, '%m/%d/%Y') 

因为strptime会丢弃超出格式字符串的任何多余字符,但您无法抓取尾随%H:%M,因为该函数不知道从哪里开始。

一旦它成为正确的日期时间类,您就可以做到:

strftime(y, '%H:%M')

我更喜欢使用as.POSIXlt而不是strptimeformat而不是strftime ......但它们大致相同。

答案 1 :(得分:2)

如果您的目标是获取带有时间的字符串,则可以在sub中使用正则表达式。如果您对没有日期信息的字符串使用strptime,则使用今天的日期。

x <- "2/7/2013 7:43"

x2 <- sub(".* ", "", x)
# [1] "7:43"

strptime(x2, "%R")
# [1] "2014-02-05 07:43:00"