Thanks much for the advice. These solutions have worked great! -Pete On Thu, Jun 3, 2010 at 8:10 PM, William Dunlap <wdun...@tibco.com> wrote:
> > -----Original Message----- > > From: r-help-boun...@r-project.org > > [mailto:r-help-boun...@r-project.org] On Behalf Of Peter Moore > > Sent: Thursday, June 03, 2010 2:22 PM > > To: r-help@r-project.org > > Subject: [R] reformat time from hhmm > > > > 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" > > You must have done this with 'times', not 'data'. > strptime's first argument should be character data, > not numeric and the default conversion of numeric > to character changes 110->"110", not "0110". I like > to use sprintf() (with its C syntax) to control the > conversion: > > > strptime(sprintf("%04d", times), "%k%M") > [1] "2010-06-03 01:10:00" "2010-06-03 02:30:00" "2010-06-03 04:59:00" > "2010-06-03 10:01:00" "2010-06-03 12:38:00" > [6] "2010-06-03 19:22:00" > > You could put the year-month-day part into the sprintf's > format argument as well if you don't want it to use today's > date for that. > > Bill Dunlap > Spotfire, TIBCO Software > wdunlap tibco.com > > > > 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@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. > > > -- Peter L. Moore Postdoctoral Research Associate Dept. Geological & Atmospheric Sciences Iowa State University Ames, IA 515-294-7201 [[alternative HTML version deleted]] ______________________________________________ R-help@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.