Come sostituire na con la mediana in r


È possibile utilizzare i seguenti metodi per sostituire i valori NA con la mediana utilizzando le funzioni dei pacchetti dplyr e Tidyr in R:

Metodo 1: sostituisci i valori NA con la mediana in una colonna

 df %>% mutate(across(col1, ~replace_na(., median(., na. rm = TRUE ))))

Metodo 2: sostituire i valori NA con la mediana in più colonne

 df %>% mutate(across(c(col1, col2), ~replace_na(., median(., na. rm = TRUE ))))

Metodo 3: sostituire i valori NA con la mediana in tutte le colonne numeriche

 df %>% mutate(across(where(is. numeric ), ~replace_na(., median(., na. rm = TRUE ))))

I seguenti esempi mostrano come utilizzare ciascun metodo nella pratica con il seguente frame di dati:

 #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

Esempio 1: sostituisci i valori NA con la mediana in una colonna

Il codice seguente mostra come sostituire i valori NA nella colonna dei punti con il valore mediano della colonna dei punti :

 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

Il valore mediano nella colonna dei punti era 15, quindi il valore NA nella colonna dei punti è stato sostituito con 15.

Tutte le altre colonne sono rimaste invariate.

Esempio 2: sostituisci i valori NA con la mediana in più colonne

Il codice seguente mostra come sostituire i valori NA nelle colonne punto e blocco con le rispettive mediane di colonna:

 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

Si noti che i valori NA nelle colonne punto e blocco sono stati entrambi sostituiti con le rispettive mediane di colonna.

Esempio 3: sostituisci i valori NA con la mediana in tutte le colonne numeriche

Il codice seguente mostra come sostituire i valori NA in ciascuna colonna numerica con il rispettivo valore mediano:

 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

Si noti che i valori NA in tutte le colonne numeriche sono stati sostituiti dalle rispettive mediane delle colonne.

L’unica colonna che non era numerica (giocatore) è rimasta invariata.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in dplyr:

Come filtrare le righe contenenti una determinata stringa utilizzando dplyr
Come eliminare righe utilizzando dplyr
Come utilizzare la funzione across() in dplyr

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *