[R] round to specific intervals

Michael Kao mkao006rmail at gmail.com
Thu Dec 1 17:33:01 CET 2011


Thanks for all the response,

I manage to write a small function to complete what I want based on the 
wonderful helps.

iround <- function(x, interval){
     ## Round numbers to desired interval
     ##
     ## Args:
     ##   x:        Numeric vector to be rounded
     ##   interval: The interval the values should be rounded towards.
     ## Retunrs:
     ##   a numeric vector with x rounded to the desired interval.
     ##
     interval[ifelse(x < min(interval), 1, findInterval(x, interval))]
}

iround(0:100, c(1, 5, 10, 20, 50))

Cheers, and thanks for all the help again.


On 1/12/2011 5:20 p.m., Duncan Murdoch wrote:
> On 01/12/2011 10:55 AM, Michael Kao wrote:
>> Dear R users/helpers,
>>
>> I am wondering is there an existing function in which you can round
>> numbers to a set of values. I know you can use 5 * round(x/5) for
>> rounding to the nearest 5 or so, but what if the interval size is not
>> constant.
>>
>> For example:
>> ## Not run
>> test<- rnorm(100)
>> round(test, c(1, 5, 10, 20, 50))
>>
>> so that the test is rounded to the closest value in the vector.
>
>
> I think you could put together such a thing using cut().
>
> Duncan Murdoch



More information about the R-help mailing list