Як замінити na на mean у dplyr
Ви можете використовувати такі методи, щоб замінити значення NA на середнє за допомогою функцій з пакетів dplyr і Tidyr в R:
Спосіб 1: замініть значення NA середнім значенням у стовпці
df %>% mutate(across(col1, ~replace_na(., mean(., na. rm = TRUE ))))
Спосіб 2. Замініть значення NA середніми в кількох стовпцях
df %>% mutate(across(c(col1, col2), ~replace_na(., mean(., na. rm = TRUE ))))
Спосіб 3: Замініть значення NA середніми у всіх числових стовпцях
df %>% mutate(across(where(is. numeric ), ~replace_na(., mean(., na. rm = TRUE ))))
У наведених нижче прикладах показано, як використовувати кожен метод на практиці з таким кадром даних:
#create data frame df <- data. frame (player=c('A', 'B', 'C', 'D', 'E'), points=c(17, 13, NA, 9, 25), rebounds=c(3, 4, NA, NA, 8), blocks=c(1, 1, 2, 4, NA)) #view data frame df player points rebounds blocks 1 to 17 3 1 2 B 13 4 1 3 C NA NA 2 4 D 9 NA 4 5 E 25 8 NA
Приклад 1: Замініть значення NA середнім у стовпці
Наступний код показує, як замінити значення NA у стовпці балів середнім значенням у стовпці балів :
library (dplyr) library (tidyr) #replace NA values in points column with mean of points column df <- df %>% mutate(across(points, ~replace_na(., mean(., na. rm = TRUE )))) #view updated data frame df player points rebounds blocks 1 to 17 3 1 2 B 13 4 1 3 C 16 NA 2 4 D 9 NA 4 5 E 25 8 NA
Середнє значення в колонці балів становило 16, тому значення NA у колонці балів було замінено на 16.
Всі інші стовпці залишилися без змін.
Приклад 2: замініть значення NA середніми в кількох стовпцях
У наведеному нижче коді показано, як замінити значення NA у стовпцях точок і блоків відповідними середніми значеннями стовпців:
library (dplyr) library (tidyr) #replace NA values in points and blocks columns with their respective means df <- df %>% mutate(across(c(points, blocks), ~replace_na(., mean(., na. rm = TRUE )))) #view updated data frame df player points rebounds blocks 1 to 17 3 1 2 B 13 4 1 3 C 16 NA 2 4 D 9 NA 4 5 E 25 8 2
Зауважте, що значення NA у стовпцях точки та блоку було замінено відповідними значеннями стовпців.
Приклад 3: Замініть значення NA середніми у всіх числових стовпцях
Наступний код показує, як замінити значення NA у кожному числовому стовпці відповідним середнім значенням:
library (dplyr) library (tidyr) #replace NA values in all numeric columns with their respective means df <- df %>% mutate(across(where(is. numeric ), ~replace_na(., mean(., na. rm = TRUE )))) #view updated data frame df player points rebounds blocks 1 to 17 3 1 2 B 13 4 1 3 C 16 5 2 4 D 9 5 4 5 E 25 8 2
Зауважте, що значення NA у всіх числових стовпцях було замінено відповідними значеннями стовпців.
Єдиний стовпець, який не був числовим (гравець), залишився без змін.
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові завдання в dplyr:
Як фільтрувати рядки, що містять певний рядок, за допомогою dplyr
Як обчислити відносні частоти за допомогою dplyr
Як вибрати перший рядок групою за допомогою dplyr