Re: [R] reformat time from hhmm

From: nikhil kaza <nikhil.list_at_gmail.com>
Date: Thu, 03 Jun 2010 20:55:59 -0400

?ifelse

> t2 <- ifelse(nchar(times)<4, paste(" ", times, sep=""), times)
> strptime(t2, "%H%M")

Nikhil

On Thu, Jun 3, 2010 at 5:21 PM, Peter Moore <pmoore_at_iastate.edu> wrote:

> Hi,
> I'm newish to R, a recent convert from Matlab... So far I'm impressed, and
> determined to solve the following problem, which seems like it should be
> easy:
> I have a long (millions of points) data series recorded with a datalogger
> that produced a timestamp in 4 columns: Year, Day of Year, Time in (H)HMM
> and Seconds. I would like to have R interpret these columns as a time
> object and have made some progress (e.g., using paste() to create a single
> column and then strptime() to interpret -- is that too roundabout??), but
> one thing is throwing me off and I can't seem to conquer it. The
> hour-minute column in the raw data has no colon, so noon looks like "1200".
> Morning times have only 3 characters and afternoon times have 4. I've been
> playing around with a fake set of times:
> times <- c(110, 230, 459, 1001, 1238, 1922)
>
> When I use
> strptime(data, "%k%M")
> the last three are interpreted fine but the first three are messed up
> because, for some reason, (even though I use %k for hour format?) the first
> two characters are assumed to be hour and the remaining one is minutes.
> For
> times[3] I get NA because R doesn't know what to do with 45 hours...
> [1] "2010-06-03 11:00:00" "2010-06-03 23:00:00" NA
> [4] "2010-06-03 10:01:00" "2010-06-03 12:38:00" "2010-06-03 19:22:00"
>
> Fair enough, so I tried a different angle, using an if...else statement:
> hours <- if(nchar(times)>3) strtrim(times,2) else strtrim(times,1)
>
> This worked great when times was only a vector of length=1, but when I try
> to apply it to something larger, I get the following warning:
> Warning message:
> In if(nchar(times)>3) strtrim(times,2) else strtrim(times,1) :
> the condition has length > 1 and only the first element will be used
> and the output hours are only the first character. Not entirely sure if I
> understand this.
>
> Any advice on how to do this? Are there packages or commands that I'm not
> aware of that know how to deal with (h)hmm times?
>
> Thanks much,
> -Pete
> ---------------------------------------------
> platform i486-pc-linux-gnu
> arch i486
> os linux-gnu
> system i486, linux-gnu
> status
> major 2
> minor 10.1
> year 2009
> month 12
> day 14
> svn rev 50720
> language R
> version.string R version 2.10.1 (2009-12-14)
>
> --
> Pete Moore
> Postdoctoral Research Associate
> Dept. Geological & Atmospheric Sciences
> Iowa State University
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help_at_r-project.org 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.
>

        [[alternative HTML version deleted]]



R-help_at_r-project.org 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. Received on Fri 04 Jun 2010 - 00:58:18 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 04 Jun 2010 - 01:20:27 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive