Telegram Group & Telegram Channel
Округление в 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



group-telegram.com/R4marketing/1322
Create:
Last Update:

Округление в 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

BY R4marketing | канал Алексея Селезнёва | Язык R




Share with your friend now:
group-telegram.com/R4marketing/1322

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

However, the perpetrators of such frauds are now adopting new methods and technologies to defraud the investors. Artem Kliuchnikov and his family fled Ukraine just days before the Russian invasion. Either way, Durov says that he withdrew his resignation but that he was ousted from his company anyway. Subsequently, control of the company was reportedly handed to oligarchs Alisher Usmanov and Igor Sechin, both allegedly close associates of Russian leader Vladimir Putin. Soloviev also promoted the channel in a post he shared on his own Telegram, which has 580,000 followers. The post recommended his viewers subscribe to "War on Fakes" in a time of fake news. Telegram has gained a reputation as the “secure” communications app in the post-Soviet states, but whenever you make choices about your digital security, it’s important to start by asking yourself, “What exactly am I securing? And who am I securing it from?” These questions should inform your decisions about whether you are using the right tool or platform for your digital security needs. Telegram is certainly not the most secure messaging app on the market right now. Its security model requires users to place a great deal of trust in Telegram’s ability to protect user data. For some users, this may be good enough for now. For others, it may be wiser to move to a different platform for certain kinds of high-risk communications.
from no


Telegram R4marketing | канал Алексея Селезнёва | Язык R
FROM American