Como substituir na por média no dplyr
Você pode usar os seguintes métodos para substituir os valores NA pela média usando funções dos pacotes dplyr e Tidyr em R:
Método 1: Substitua os valores de NA pela média em uma coluna
df %>% mutate(across(col1, ~replace_na(., mean(., na. rm = TRUE ))))
Método 2: Substitua os valores NA pela média em várias colunas
df %>% mutate(across(c(col1, col2), ~replace_na(., mean(., na. rm = TRUE ))))
Método 3: Substitua os valores de NA pela média em todas as colunas numéricas
df %>% mutate(across(where(is. numeric ), ~replace_na(., mean(., 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 de NA pela média em uma coluna
O código a seguir mostra como substituir os valores NA na coluna de pontos pelo valor médio na coluna de pontos :
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
O valor médio na coluna de pontos foi 16, portanto o valor NA na coluna de pontos foi substituído por 16.
Todas as outras colunas permaneceram inalteradas.
Exemplo 2: Substitua os valores NA pela média em múltiplas colunas
O código a seguir mostra como substituir os valores NA nas colunas de pontos e blocos pelas respectivas médias das colunas:
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
Observe que os valores NA nas colunas de pontos e blocos foram substituídos pelas respectivas médias das colunas.
Exemplo 3: Substitua os valores NA pela média em todas as colunas numéricas
O código a seguir mostra como substituir os valores NA em cada coluna numérica pelo seu respectivo valor médio:
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
Observe que os valores NA em todas as colunas numéricas foram substituídos pelas respectivas médias 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 calcular frequências relativas usando dplyr
Como selecionar a primeira linha por grupo usando dplyr