Perhaps this ...

roundToHalf <- function(t) { 
        t <- as.POSIXlt(t)
        if (t$min < 15) {
                t$min <- 0
        } 
        else if (t$min < 45) {
                t$min <- 30             
        }
        else {
                t$min <- 0
                t$hour <- t$hour + 1
        }
        return(t)
}

# check
for (i in 1:20) {
        a <- Sys.time() + (i*490)  # semi arbitrary intervals
        b <- roundToHalf(a)
        print(paste(a, "  ", b))
}


B.


On Nov 21, 2014, at 5:55 PM, Raghuraman Ramachandran <optionsra...@gmail.com> 
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.
> 
> Many thanks
> Raghu
> 
> On Fri, Nov 21, 2014 at 10:52 PM, Raghuraman Ramachandran
> <optionsra...@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@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.

______________________________________________
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.

Reply via email to