[R] converting a time to nearest half-hour

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Fri Jul 23 18:15:57 CEST 2010


By entering "trunc.POSIXt" at the R commandline, you can see the standard truncate implementation. Riffing on this, 

roundhalfhour <- function( x ) {
 x <- as.POSIXlt( x + as.difftime( 15, units="mins" ) )
 x$sec <- 0
 x$min <- 30*(x$min %/% 30)
 as.POSIXct(x)
}

The as.double approach ought to work also, but rounding error might be a problem.

"David Winsemius" <dwinsemius at comcast.net> wrote:

>
>On Jul 23, 2010, at 11:35 AM, David Winsemius wrote:
>
>>
>> On Jul 23, 2010, at 11:20 AM, <Murali.Menon at avivainvestors.com> <Murali.Menon at avivainvestors.com 
>> > wrote:
>>
>>> Hi folks,
>>>
>>> I've got a POSIXct datum as follows:
>>>
>>>> Sys.time()
>>> [1] "2010-07-23 11:29:59 BST"
>>>
>>> I want to convert this to the nearest half-hour, i.e., to  
>>> "2010-07-23 11:30:00 BST"
>>>
>>> (If the time were "11:59:ss", I want to convert to "12:00:00").
>>>
>>> How to achieve this?
>>
>> Couldn't you just coerce to numeric, divide by 60(sec)*30(half-hour  
>> minutes), round to integer, multiply by 60*30,  coerce to POSIXct?
>
>When I tried my method I see that one also needs to add or subtract  
>the proper number of seconds from Universal Time to get the output  
>formatting correct. (Probably demonstrates that I do not have the  
>proper understanding of the right place to employ a TZ specification.).
>
>David Winsemius, MD
>West Hartford, CT
>
>______________________________________________
>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.

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
---------------------------------------------------------------------------
Sent from my phone. Please excuse my brevity.



More information about the R-help mailing list