Help with Time
On Nov 21, 2014, at 2:55 PM, Raghuraman Ramachandran wrote:
Sorry I forgot to mention it clearly. I like to round it to the nearest 30th minute that is past. So 12:28:59 will be again 12:00:00 and 12:59:59 will be 12:30:00 etc. Apologies for the lack of clarity in the beginning.
That's just truncation. Should be very easy to hack trunc.POSIXt to deliver that result. Add a "half_hr" unit to the list and then a simple extra clause that check for minutes >30.
base::trunc.POSIXt
function (x, units = c("secs", "mins", "hours", "days"), ...)
{
units <- match.arg(units)
x <- as.POSIXlt(x)
if (length(x$sec))
switch(units, secs = {
x$sec <- trunc(x$sec)
}, mins = {
x$sec[] <- 0
}, hours = {
x$sec[] <- 0
x$min[] <- 0L
}, days = {
x$sec[] <- 0
x$min[] <- 0L
x$hour[] <- 0L
x$isdst[] <- -1L
})
x
}
<bytecode: 0x10a54b038>
<environment: namespace:base>
David. > Many thanks > Raghu > > On Fri, Nov 21, 2014 at 10:52 PM, Raghuraman Ramachandran > <optionsraghu at gmail.com> wrote: >> Dear guRus >> >> How can I round of time in R to the nearest 30th minute please? >> >> For example suppose if >>> Sys.time() >> [1] "2014-11-21 22:49:05.59042 GMT" >> then I would like a function that outputs 22:30:00. >> >> if Sys.time is 12:13:22 then I would like to get 12:00:00 etc. >> >> Any help would be appreciated. >> >> Many thanks and regards, >> Raghu > > ______________________________________________ > 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. David Winsemius Alameda, CA, USA