Как заменить 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, поэтому значение «НО» в столбце «баллы » было заменено на 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
Как использовать функциюthrough() в dplyr