R: Round to Multiple

RoundTo {DescTools} | R Documentation

## Round to Multiple

### Description

Returns a number rounded to the nearest specified multiple.

### Usage

    RoundTo(x, multiple = 1, FUN = round)

### Arguments

`x` | numeric. The value to round.
`multiple` | numeric. The multiple to which the number is to be rounded. Default is 1.
`FUN` | the rounding function as character or as expression. Can be one out of `trunc`, `ceiling`, `round` (default) or `floor`.

### Details

There are several functions to convert to integers. `round` rounds to the nearest integer or to any number of digits. Using a negative number rounds to a power of ten, so that `round (x, -3)` rounds to thousands. Each of `trunc`, `floor` and `ceiling` round in a fixed direction, towards zero, down and up respectively. `round` is documented to round to even, so `round(2.5)` is `2`.

`RoundTo` uses `round(x/multiple)*multiple` to get the result. So if `x` is equally close to two multiples, the multiple with the smaller absolute value will be returned when `round(x/multiple)` is even (and the greater when it's odd).
If `FUN` is set to `ceiling` it will always round up, and if set to `floor` it will always round down. See examples for comparison).

### Value

the rounded value

### Author(s)

Andri Signorell <andri@signorell.net>

### See Also

`round`, `trunc`, `ceiling`, `floor`

### Examples

    RoundTo(10, 3)     # Rounds 10 to a nearest multiple of 3 (9)
    RoundTo(-10, -3)   # Rounds -10 to a nearest multiple of -3 (-9)

    RoundTo(1.3, 0.2)  # Rounds 1.3 to a nearest multiple of 0.2 (1.2)
    RoundTo(-1.3, 0.2) # Rounds -1.3 to a nearest multiple of 0.2 (-1.2)
    RoundTo(5, -2)     # Returns an error, because -2 and 5 have different signs

    # Round down
    RoundTo(c(1,-1) * 1.2335, 0.05, floor)
    RoundTo(c(1,-1) * 1233.5, 100, floor)

    # Round up
    RoundTo(c(1,-1) * 1.2335, 0.05, ceiling)
    RoundTo(c(1,-1) * 1233.5, 100, ceiling)

    # Round towards zero
    RoundTo(c(1,-1) * 1.2335, 0.05, trunc)
    RoundTo(c(1,-1) * 1233.5, 100, trunc)

    x <- c(-1.5,-1.3, 1.3, 1.5)
    cbind(x =       x,
          round =   RoundTo(x, 0.2, FUN=round),
          trunc =   RoundTo(x, 0.2, FUN=trunc),
          ceiling = RoundTo(x, 0.2, FUN=ceiling),
          floor =   RoundTo(x, 0.2, FUN=floor)
    )

    x <- -10:10
    cbind(x =       x,
          round =   RoundTo(x, 2, FUN=round),
          trunc =   RoundTo(x, 2, FUN=trunc),
          ceiling = RoundTo(x, 2, FUN=ceiling),
          floor =   RoundTo(x, 2, FUN=floor)
    )

[Package DescTools version 0.99.26 Index]