I am trying to extract out the time from a character string in R and can't stop getting NA as a result. I have tried numerous variations of the regular expression tags, but can't seem to get around this simple problem. Any help/clarifications are appreciated.
Here is my code for an example:
> x
[1] "2/7/2013 7:43"
> class(x)
[1] "character"
> z <- strptime(x, "%H:%M")
> z
[1] NA
R doesn't know that your string is a datetime. So make it one first:
y <- strptime(x, format='%m/%d/%Y %H:%M')
If you were trying to get just the date, you could do:
strptime(x, '%m/%d/%Y')
Because strptime
discards any extra characters past your format string, but you cannot grab the trailing %H:%M
because the function doesn't know where to start.
Once it is a proper datetime class, you can do things to it:
strftime(y, '%H:%M')
I prefer to use as.POSIXlt
rather than strptime
and format
instead of strftime
... but they are roughly equivalent.
If your goal is to obtain a string with the time, you can use regular expressions in sub
. If you use strptime
on a string with no date information, today's date is used.
x <- "2/7/2013 7:43"
x2 <- sub(".* ", "", x)
# [1] "7:43"
strptime(x2, "%R")
# [1] "2014-02-05 07:43:00"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With