issue with strptime

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

issue with strptime

cassie jones
Hi everyone,

I have bunch of date and time observations in the format %Y-%m-%d %I %M %S
%p. I used strptime() to read this format. But the problem is some of the
times are in the format of  %I %M %p, so for those times, strptime is giving
me NA values.

For example,

strptime(paste("2009-04-08","1:49:47 PM"),format="%Y-%m-%d %I:%M:%S %p")

[1] "2009-04-08 13:49:47"


But

strptime(paste("2009-04-08","1:49 PM"),format="%Y-%m-%d %I:%M:%S %p")

[1] NA

Now I have approximately 10000 observations, so I can't go through all the
observations individually in order to find which row in the array has this
format.

Can anyone suggest me how to handle this issue? Is there any way to convert
%I %M %p format to %I %M %S %p?

Thanks in advance for the help.

Cassie

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: issue with strptime

William Dunlap
You could loop over the list of reasonable formats,
using the first one that works (does not return NA):

f <- function (strings, formats) {
    times <- strptime(strings, formats[1])
    i <- 1
    while ((i < length(formats)) && any(isBad <- is.na(times))) {
        i <- i + 1
        times[isBad] <- strptime(strings[isBad], formats[i])
    }
    times
}

E.g.,

> s <- c("2009-04-08 1:49:47 PM",
+        "2009-04-08 1:49 PM",
+        "2011-06-17 2:01:03 AM")
> fmts <- c("%Y-%m-%d %I:%M:%S %p", "%Y-%m-%d %I:%M %p")
> f(s, fmts)
[1] "2009-04-08 13:49:47" "2009-04-08 13:49:00" "2011-06-17 02:01:03"

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com  

> -----Original Message-----
> From: [hidden email]
> [mailto:[hidden email]] On Behalf Of cassie jones
> Sent: Friday, June 17, 2011 9:55 AM
> To: [hidden email]
> Subject: [R] issue with strptime
>
> Hi everyone,
>
> I have bunch of date and time observations in the format
> %Y-%m-%d %I %M %S
> %p. I used strptime() to read this format. But the problem is
> some of the
> times are in the format of  %I %M %p, so for those times,
> strptime is giving
> me NA values.
>
> For example,
>
> strptime(paste("2009-04-08","1:49:47 PM"),format="%Y-%m-%d
> %I:%M:%S %p")
>
> [1] "2009-04-08 13:49:47"
>
>
> But
>
> strptime(paste("2009-04-08","1:49 PM"),format="%Y-%m-%d %I:%M:%S %p")
>
> [1] NA
>
> Now I have approximately 10000 observations, so I can't go
> through all the
> observations individually in order to find which row in the
> array has this
> format.
>
> Can anyone suggest me how to handle this issue? Is there any
> way to convert
> %I %M %p format to %I %M %S %p?
>
> Thanks in advance for the help.
>
> Cassie
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.