[R] Help with Time

David Winsemius dwinsemius at comcast.net
Sat Nov 22 00:19:57 CET 2014


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



More information about the R-help mailing list