#r #rounding
Вопрос:
У меня есть набор данных с числами с несколькими значащими цифрами. Мне нужно округлить до ближайшей десятичной точки вверх и до ближайшей десятичной точки вниз.
вот пример кода для справки с некоторыми случайными числами, похожими на те, с которыми я работаю:
x <- c(0.987, 1.125, 0.87359, 1.2)
high_rounded <- round(x, digits = 1)
low_rounded <- high_rounded - 0.1
и затем мне нужно иметь возможность использовать как переменные с высоким, так и с низким округлением в дальнейших анализах. То, как у меня сейчас написан код, будет работать только при округлении числа в большую сторону, но если его нужно округлить в меньшую сторону, то он не работает. Функция round() работает только для округления числа, однако его необходимо округлить, но я не могу указать округление в большую или меньшую сторону.
Я также пытался:
ceiling(x)
Но это округляется только до ближайшего целого числа, и мне нужна ближайшая десятичная точка.
Комментарии:
1. Таким образом, для приведенных в качестве примера точек данных для 0,987 мне потребуется 1,0 для округления с высоким значением и 0,9 для округления с низким значением. Для 1.125 значение high_round должно быть 1,2, а значение low_round должно быть 1,1. Извините за отсутствие ясности!
2. Я бы предложил посмотреть ответ Бена ниже и использовать функции
floor()
иceiling()
для обеих сторон.
Ответ №1:
Как насчет ceiling(x*10)/10
… ?
Ответ №2:
Вы можете использовать round_any
из plyr
пакета
plyr::round_any(x <- c(0.987, 1.125, 0.87359, 1.2), accuracy = 0.1, f = ceiling)
[1] 1.0 1.2 0.9 1.2