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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *