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

Add a Comment

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