Como substituir na pela mediana em r
Você pode usar os seguintes métodos para substituir os valores NA pela mediana usando funções dos pacotes dplyr e Tidyr em R:
Método 1: Substitua os valores de NA pela mediana em uma coluna
df %>% mutate(across(col1, ~replace_na(., median(., na. rm = TRUE ))))
Método 2: Substitua os valores NA pela mediana em várias colunas
df %>% mutate(across(c(col1, col2), ~replace_na(., median(., na. rm = TRUE ))))
Método 3: Substitua os valores NA pela mediana em todas as colunas numéricas
df %>% mutate(across(where(is. numeric ), ~replace_na(., median(., na. rm = TRUE ))))
Os exemplos a seguir mostram como usar cada método na prática com o seguinte quadro de dados:
#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
Exemplo 1: Substitua os valores NA pela mediana em uma coluna
O código a seguir mostra como substituir os valores NA na coluna de pontos pelo valor mediano da coluna de pontos :
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
O valor mediano na coluna de pontos era 15, portanto o valor NA na coluna de pontos foi substituído por 15.
Todas as outras colunas permaneceram inalteradas.
Exemplo 2: Substitua os valores NA pela mediana em múltiplas colunas
O código a seguir mostra como substituir os valores NA nas colunas de pontos e blocos pelas respectivas medianas das colunas:
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
Observe que os valores de NA nas colunas de pontos e blocos foram substituídos pelas respectivas medianas das colunas.
Exemplo 3: Substitua os valores NA pela mediana em todas as colunas numéricas
O código a seguir mostra como substituir os valores NA em cada coluna numérica pelos seus respectivos valores medianos:
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
Observe que os valores de NA em todas as colunas numéricas foram substituídos pelas respectivas medianas das colunas.
A única coluna que não era numérica (jogador) permaneceu inalterada.
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns no dplyr:
Como filtrar linhas contendo uma determinada string usando dplyr
Como deletar linhas usando dplyr
Como usar a função across() no dplyr