У аналізі даних часто виникає потреба обчислити зважену середню для певного набору даних. Це особливо корисно, коли маємо велику кількість колонок і хочемо обчислити середнє значення, зважене за певними вагами. У цій статті ми розглянемо, як використовувати мову програмування R та пакет dplyr для обчислення зваженої середньої вибраних колонок в табличних даних.
Розглянемо задачу: ми маємо табличні дані з декількома колонками і вагами, і ми хочемо обчислити зважену середню для певного набору колонок за цими вагами. Наприклад, ми маємо табличні дані з колонками a, b, та c, і ми хочемо обчислити зважену середню для цих колонок, де колонка a має вагу 0.4, колонка b має вагу 0.4, а колонка c має вагу 0.2.
1 2 3 4 5 6 7 |
# Створимо табличні дані db <- tibble(a = rnorm(1000), b = rnorm(1000), c = rnorm(1000)) # Створимо табличку з вагами w <- tibble(col = c("a","b","c"), w = c(.4,.4,.2)) |
Для обчислення зваженої середньої використаємо функцію mutate() з пакету dplyr. Ми виберемо відповідні колонки з db, помножимо їх на відповідні ваги з w, підсумуємо результати та нормалізуємо їх за допомогою суми ваг.
1 2 3 |
library(dplyr) db <- db %>% mutate(AVG = rowSums(select(., all_of(w$col)) * w$w) / sum(w$w)) |
У цьому коді rowSums(select(., all_of(w$col)) * w$w) обирає відповідні колонки з db, помножує їх на відповідні ваги з w та підсумовує результат. Поділення на sum(w$w) визначає загальну суму ваг для нормалізації. Цей підхід масштабований для будь-якого вибору, оскільки він динамічно вибирає колонки та їх ваги з табличок db та w.
Тепер ми можемо легко обчислити зважену середню для будь-якого вибору колонок у наших даних за допомогою мови програмування R та пакету dplyr.