Hoe na te vervangen door mean in dplyr


U kunt de volgende methoden gebruiken om NA-waarden te vervangen door het gemiddelde met behulp van functies uit de dplyr- en Tidyr- pakketten in R:

Methode 1: Vervang NA-waarden door het gemiddelde in een kolom

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

Methode 2: NA-waarden vervangen door gemiddelde in meerdere kolommen

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

Methode 3: Vervang NA-waarden door gemiddelde in alle numerieke kolommen

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

De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken met het volgende dataframe:

 #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

Voorbeeld 1: NA-waarden vervangen door het gemiddelde in een kolom

De volgende code laat zien hoe je de NA-waarden in de puntenkolom vervangt door de gemiddelde waarde in de puntenkolom :

 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

De gemiddelde waarde in de puntenkolom was 16, dus de NA-waarde in de puntenkolom werd vervangen door 16.

Alle overige kolommen bleven ongewijzigd.

Voorbeeld 2: NA-waarden vervangen door gemiddelde in meerdere kolommen

De volgende code laat zien hoe u de NA-waarden in de punt- en blokkolommen vervangt door hun respectievelijke kolomgemiddelden:

 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

Merk op dat de NA-waarden in de punt- en blokkolommen beide zijn vervangen door hun respectievelijke kolomgemiddelden.

Voorbeeld 3: NA-waarden vervangen door gemiddelde in alle numerieke kolommen

De volgende code laat zien hoe u de NA-waarden in elke numerieke kolom vervangt door hun respectieve gemiddelde waarde:

 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

Merk op dat de NA-waarden in alle numerieke kolommen zijn vervangen door hun respectievelijke kolomgemiddelden.

De enige kolom die niet numeriek was (speler) bleef ongewijzigd.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in dplyr uitvoert:

Hoe u rijen kunt filteren die een bepaalde tekenreeks bevatten met behulp van dplyr
Hoe relatieve frequenties te berekenen met behulp van dplyr
Hoe u de eerste rij per groep selecteert met dplyr

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert