round_to_fraction {janitor} | R Documentation |
Round to the nearest fraction of a specified denominator.
Description
Round a decimal to the precise decimal value of a specified fractional denominator. Common use cases include addressing floating point imprecision and enforcing that data values fall into a certain set.
E.g., if a decimal represents hours and values should be logged to the nearest
minute, round_to_fraction(x, 60)
would enforce that distribution and 0.57
would be rounded to 0.566667, the equivalent of 34/60. 0.56 would also be rounded
to 34/60.
Set denominator = 1
to round to whole numbers.
The digits
argument allows for rounding of the subsequent result.
Usage
round_to_fraction(x, denominator, digits = Inf)
Arguments
x |
A numeric vector |
denominator |
The denominator of the fraction for rounding (a scalar or vector positive integer). |
digits |
Integer indicating the number of decimal places to be used
after rounding to the fraction. This is passed to |
Details
If digits
is Inf
, x
is rounded to the fraction
and then kept at full precision. If digits
is "auto"
, the
number of digits is automatically selected as
ceiling(log10(denominator)) + 1
.
Value
the input x rounded to a decimal value that has an integer numerator relative
to denominator
(possibly subsequently rounded to a number of decimal
digits).
Examples
round_to_fraction(1.6, denominator = 2)
round_to_fraction(pi, denominator = 7) # 22/7
round_to_fraction(c(8.1, 9.2), denominator = c(7, 8))
round_to_fraction(c(8.1, 9.2), denominator = c(7, 8), digits = 3)
round_to_fraction(c(8.1, 9.2, 10.3), denominator = c(7, 8, 1001), digits = "auto")