[R] Rounding

Ko-Kang Kevin Wang kwan022 at stat.auckland.ac.nz
Thu Sep 19 11:22:14 CEST 2002


Hi,

Thanks for the quick solution.  

However I'm just wondering what happens if I'd like to generalise it.  For
example I can do:
  x <- 459
  floor(x / 100) * 100
or
  ceiling(x / 100) * 100  

Now my questions is: how do I work out the number of digits x has?  For
example in this case I have 3 digits for x (4, 5, and 9), hence I can
divide it by 100 first, floor() or ceiling() the result, then times 100.  

If I have n digits for x, this means I want to divide by (n - 1).  

But I'm not sure how to find n :-(

On 19 Sep 2002, Peter Dalgaard BSA wrote:

> Date: 19 Sep 2002 10:25:45 +0200
> From: Peter Dalgaard BSA <p.dalgaard at biostat.ku.dk>
> To: Ko-Kang Kevin Wang <kwan022 at stat.auckland.ac.nz>
> Cc: R Help <r-help at stat.math.ethz.ch>
> Subject: Re: [R] Rounding
> 
> Ko-Kang Kevin Wang <kwan022 at stat.auckland.ac.nz> writes:
> 
> > Hi,
> > 
> > Suppose I have:
> >   459
> >   1789
> >   23590
> > and I'd like to round them to:
> >   400
> >   1700
> >   24000
> > 
> > On the other hand, say if I have:
> >   232
> >   1234
> >   23120
> > that need to be rounded to:
> >   300
> >   1300
> >   24000
> > 
> > I tried the round(), floor() or ceiling() and can't get what I want.  Is
> > there any tricks I can use to achieve this goal?
> 
> Not beyond brute force...
> 
>  myroundup <- function(x,d){e<-10^(floor(log10(x)-d));ceiling(x/e)*e}
>  myroundup(c(232,1234,23120),1)
> 
> Notice that there are some obnoxious cases for exact powers of 10 that
> you might want to fudge with, e.g.
> 
> > myroundup(10^25,1)
> [1] 1.1e+25
> 
> but that seems to be the first positive power of 10 that gets in
> trouble. For negative powers it's already at
> 
> > myroundup(1e-5,1)
> [1] 1.1e-05
> 
> 
> This suggests that you might want something like
> 
> myroundup <- function(x,d){e<-10^(floor(log10(x)-d));ceiling(x/e-1e-15)*e}
> 
> but you should maybe also watch out for the anomalies in
> 
> > floor(log10(10^(0:20)))
>  [1]  0  1  2  2  4  5  5  7  8  8 10 11 11 12 14 14 16 17 17 19 20
> 
> -- 
>    O__  ---- Peter Dalgaard             Blegdamsvej 3  
>   c/ /'_ --- Dept. of Biostatistics     2200 Cph. N   
>  (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
> ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907
> 

Cheers,

Kevin

------------------------------------------------------------------------------
Ko-Kang Kevin Wang
Postgraduate PGDipSci Student
Department of Statistics
University of Auckland
New Zealand
Homepage: http://www.stat.auckland.ac.nz/~kwan022


-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list