Существует ли функция R для округления числа до одной десятичной точки?

#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