我试图从R中的字符串中提取出时间,并且无法停止获取NA作为结果。我已经尝试了正则表达式标签的多种变体,但似乎无法解决这个简单的问题。任何帮助/澄清表示赞赏。
以下是我的代码示例:
> x
[1] "2/7/2013 7:43"
> class(x)
[1] "character"
> z <- strptime(x, "%H:%M")
> z
[1] NA
答案 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
而不是strptime
和format
而不是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"