View in Telegram
Округление в R Вчера мы столкнулись с расхождением в расчёте LT на одних и тех же данных в Power BI и R. После некоторого ресёрча я понял, что разница была в округлении. Функция round() в R округлила число 6.5 до 6, а Power BI - до 7. Впервые для себя я узнал, что функция round() использует не привычный нам математический способ округления, а так называемый банковский. Вот в чём их отличия: Банковское округление: ● Числа с десятичной частью .5 округляются до ближайшего чётного целого числа. ● Например, 2.5 округляется до 2, а 3.5 округляется до 4. Математическое округление: ● Числа с десятичной частью .5 всегда округляются вверх. ● Например, 2.5 округляется до 3, а 3.5 тоже округляется до 4. То есть если вы через round() попробуете округлить числа 2.5, 4.5, 6.5, то получите соответственно 2, 4, 6, а не ожидаемые 3, 5, 7. Как оказалось, в базовом R вообще нет функции для математического округления. Поэтому если вдруг вам понадобится где-то использовать математическое округление, которое мы с вами учили в школе, придётся писать собственную функцию. Ниже приведена функция, которая математическим способом округляет дробные числа до целого:
round_math <- function(x) {

  sign(x) * floor(abs(x) + 0.5)

}
Если вы хотите иметь возможность указать количество разрядов после запятой, то используйте эту функцию:
custom_round <- function(x, digits = 0) {
  posneg <- sign(x)  # Определяем знак числа
  z <- abs(x) * 10^digits
  z <- z + 0.5  # Добавляем 0.5 для округления вверх
  z <- floor(z)
  return(posneg * z / 10^digits)
}
#заметки_по_R
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Find friends or serious relationships easily