Як замінити na на медіану в r


Ви можете використовувати наступні методи, щоб замінити значення NA на медіану за допомогою функцій з пакетів dplyr і Tidyr в R:

Спосіб 1: замініть значення NA медіаною в стовпці

 df %>% mutate(across(col1, ~replace_na(., median(., na. rm = TRUE ))))

Спосіб 2: замініть значення NA медіаною в кількох стовпцях

 df %>% mutate(across(c(col1, col2), ~replace_na(., median(., na. rm = TRUE ))))

Спосіб 3: Замініть значення NA медіаною у всіх числових стовпцях

 df %>% mutate(across(where(is. numeric ), ~replace_na(., median(., 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 median of points column
df <- df %>% mutate(across(points, ~replace_na(., median(., na. rm = TRUE ))))

#view updated data frame
df

  player points rebounds blocks
1 to 17 3 1
2 B 13 4 1
3 C 15 NA 2
4 D 9 NA 4
5 E 25 8 NA

Середнє значення в стовпчику балів було 15, тому значення NA у стовпчику балів було замінено на 15.

Всі інші стовпці залишилися без змін.

Приклад 2: замініть значення NA медіаною в кількох стовпцях

У наведеному нижче коді показано, як замінити значення NA у стовпцях точок і блоків відповідними медіанами стовпців:

 library (dplyr)
library (tidyr)

#replace NA values in points and blocks columns with their respective medians
df <- df %>% mutate(across(c(points, blocks), ~replace_na(., median(., na. rm = TRUE ))))

#view updated data frame
df

  player points rebounds blocks
1 to 17 3 1.0
2 B 13 4 1.0
3 C 15 NA 2.0
4 D 9 NA 4.0
5 E 25 8 1.5

Зауважте, що значення NA у стовпцях точки та блоку було замінено відповідними медіанами стовпців.

Приклад 3: Замініть значення NA медіаною у всіх числових стовпцях

Наступний код показує, як замінити значення NA в кожному числовому стовпці відповідним середнім значенням:

 library (dplyr)
library (tidyr)

#replace NA values in all numeric columns with their respective medians
df <- df %>% mutate(across(where(is. numeric ), ~replace_na(., median(., na. rm = TRUE ))))

#view updated data frame
df

  player points rebounds blocks
1 to 17 3 1.0
2 B 13 4 1.0
3 C 15 4 2.0
4 D 9 4 4.0
5 E 25 8 1.5

Зауважте, що значення NA у всіх числових стовпцях було замінено відповідними медіанами стовпців.

Єдиний стовпець, який не був числовим (гравець), залишився без змін.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в dplyr:

Як фільтрувати рядки, що містять певний рядок, за допомогою dplyr
Як видалити рядки за допомогою dplyr
Як використовувати функцію cross() у dplyr

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *