yuyu
yuyu

Reputation: 9

Convert string to timestamps in R

I have the string which is formatted as below:

Tue Feb 11 12:28:36 +0000 2014

I try to convert this string to timestamps in R by using:

timeobj <- strptime(df[1], format = "%a %b %e %H:%M:%S %z %Y", tz = "GMT")

where df[1] is in format of Tue Feb 11 12:28:36 +0000 2014

However, I got an error as below:

Error in strptime(df[1], format = "%a %b %e %H:%M:%S %z %Y", tz = "GMT") : 
  input string is too long

How can I fix this?

dput(df[ 1:5, 1]) =

c("Tue Feb 11 12:47:26 +0000 2014", "Tue Feb 11 12:55:09 +0000 2014", "Tue Feb 11 13:22:29 +0000 2014", "Tue Feb 11 13:24:31 +0000 2014", "Tue Feb 11 13:34:00 +0000 2014") 

Upvotes: 0

Views: 350

Answers (2)

shino
shino

Reputation: 1

%T is enough for the time. timeobj <- strptime(df[1], format = "%a %b %e %T %z %Y", tz = "GMT")

Upvotes: 0

GKi
GKi

Reputation: 39657

It looks like that your locale is not fitting the abbreviated weekday and month name.

x <- c("Tue Feb 11 12:47:26 +0000 2014",
  "Tue Feb 11 12:55:09 +0000 2014", "Tue Feb 11 13:22:29 +0000 2014",
  "Tue Feb 11 13:24:31 +0000 2014", "Tue Feb 11 13:34:00 +0000 2014")

Sys.setlocale("LC_ALL", "de_AT.UTF-8")
strptime(x, format = "%a %b %e %H:%M:%S %z %Y", tz = "GMT")
#[1] NA NA NA NA NA

Sys.setlocale("LC_ALL", "C")
strptime(x, format = "%a %b %e %H:%M:%S %z %Y", tz = "GMT")
#[1] "2014-02-11 12:47:26 GMT" "2014-02-11 12:55:09 GMT"
#[3] "2014-02-11 13:22:29 GMT" "2014-02-11 13:24:31 GMT"
#[5] "2014-02-11 13:34:00 GMT"

The manual of strptime says: '%a' Abbreviated weekday name in the current locale on this platform.

Also it looks like you are providing a data.frame with df[1] and not a vector which can probably provided with df[,1].

Upvotes: 2

Related Questions