Я пытаюсь округлить числа до 0.5
. Мой набор данных следующий -
Wgt
0.160
0.522
0.174
0.765
1.246
2.893
Результат, который я хочу получить округлением
Round Wgt
0.5
1.0
0.5
1.0
1.5
3
В основном, потолок числа на 0.5
. Пожалуйста, помогите мне с этим.
3 ответа
Просто сделайте это:
x <- c(0.16, 0.522, 0.174, 0.765, 1.246, 2.893)
y <- x * 2
z <- ceiling(y)
z / 2
Это поможет вам встать на путь.
0.5 1.0 0.5 1.0 1.5 3.0
Не удалось найти явного ответа на этот вопрос, запеченный в R, но вот быстрый вопрос. Я создал функцию с именем half_ceil, которая выполняла желаемое поведение для одного значения, а затем использовал sapply, чтобы применить ее к вектору:
half_ceil = function(x){
whole = ceiling(x)
if(x >= whole - .5){
return(whole)
}
return(whole - .5)
}
sapply(Wgt, half_ceil)
Это будет округлять значения с десятичной дробью 0,5 до следующего целого числа, а не в меньшую сторону, но вы можете сохранить эти значения такими, какие они есть, просто изменив знак «больше или равно» на знак «меньше».
Вы можете опробовать библиотеку plyr
с функцией round_any
, которая может делать именно это.
> library(plyr)
> x <- c(0.16, 0.522, 0.174, 0.765, 1.246, 2.893)
> round_any(x, 0.5, f=ceiling)
[1] 0.5 1.0 0.5 1.0 1.5 3.0
Похожие вопросы
Новые вопросы
r
R — это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, используйте минимально воспроизводимые примеры, которые другие могут запустить с помощью копирования и вставки. Показать желаемый результат полностью. Используйте dput() для данных и укажите все небазовые пакеты с помощью library(). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. Для вопросов по статистике используйте https://stats.stackexchange.com.