I am writing a function to plot data. I would like to specify a nice round number for the y-axis max
that is greater than the max of the dataset.
Specifically, I would like a function foo
that performs the following:
foo(4) == 5 foo(6.1) == 10 #maybe 7 would be better foo(30.1) == 40 foo(100.1) == 110
I have gotten as far as
foo <- function(x) ceiling(max(x)/10)*10
for rounding to the nearest 10, but this does not work for arbitrary rounding intervals.
Is there a better way to do this in R?
When rounding to the nearest hundred, look at the TENS DIGIT of the number. If that digit is 0, 1, 2, 3, or 4, you will round down to the previous hundred. If that digit is 5, 6, 7, 8, or 9, you will round up to the next hundred.
The plyr
library has a function round_any
that is pretty generic to do all kinds of rounding. For example
library(plyr) round_any(132.1, 10) # returns 130 round_any(132.1, 10, f = ceiling) # returns 140 round_any(132.1, 5, f = ceiling) # returns 135
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With