[R] rounding up (always)

(Ted Harding) ted.harding at wlandres.net
Wed Oct 20 23:55:51 CEST 2010


On 20-Oct-10 21:27:46, Duncan Murdoch wrote:
> On 20/10/2010 5:16 PM, Dimitri Liakhovitski wrote:
>> Hello!
>>
>> I am trying to round the number always up - i.e., whatever the
>> positive number is, I would like it to round it to the closest 10 that
>> is higher than this number, the closest 100 that is higher than this
>> number, etc.
>>
>> For example:
>> x<-3241.388
>>
>> signif(x,1) rounds to the closest thousand, i.e., to 3,000, but I'd
>> like to get 4,000 instead.
>> signif(x,2) rounds to the closest hundred, i.e., to 3,200, but I'd
>> like to get 3,300 instead.
>> signif(x,3) rounds to the closest ten, i.e., to 3,240, but I'd like to
>> get 3,250 instead.
>>
>> Of course, I could do:
>> floor(signif(x,1)+1000)
>> floor(signif(x,2)+100)
>> floor(signif(x,3)+10)
>>
>> But it's very manual - because in the problem I am facing the numbers
>> sometimes have to be rounded to a 1000, sometimes to a 100, etc.
> 
> Write a function.  You have very particular needs, so it's unlikely 
> there's already one out there that matches them.
> Duncan Murdoch

As Duncan and Clint suggest, writing a function is straightforward:
for the problem as you have stated it, on the lines of

  function(x,k){floor(signif(x,k-as.integer(log(x,10)-1))) + 10^k}

However, what do you *really* want to happen to 3000?

Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <ted.harding at wlandres.net>
Fax-to-email: +44 (0)870 094 0861
Date: 20-Oct-10                                       Time: 22:55:47
------------------------------ XFMail ------------------------------



More information about the R-help mailing list