So ersetzen sie na durch mean in dplyr
Sie können die folgenden Methoden verwenden, um NA-Werte durch den Mittelwert zu ersetzen, indem Sie Funktionen aus den dplyr- und Tidyr -Paketen in R verwenden:
Methode 1: Ersetzen Sie die NA-Werte durch den Durchschnitt in einer Spalte
df %>% mutate(across(col1, ~replace_na(., mean(., na. rm = TRUE ))))
Methode 2: Ersetzen Sie die NA-Werte durch den Durchschnitt in mehreren Spalten
df %>% mutate(across(c(col1, col2), ~replace_na(., mean(., na. rm = TRUE ))))
Methode 3: Ersetzen Sie die NA-Werte durch den Durchschnitt in allen numerischen Spalten
df %>% mutate(across(where(is. numeric ), ~replace_na(., mean(., na. rm = TRUE ))))
Die folgenden Beispiele zeigen, wie jede Methode in der Praxis mit dem folgenden Datenrahmen verwendet wird:
#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
Beispiel 1: Ersetzen Sie NA-Werte durch den Durchschnitt in einer Spalte
Der folgende Code zeigt, wie die NA-Werte in der Punktespalte durch den Durchschnittswert in der Punktespalte ersetzt werden:
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
Der Durchschnittswert in der Punktespalte betrug 16, daher wurde der NA-Wert in der Punktespalte durch 16 ersetzt.
Alle anderen Spalten blieben unverändert.
Beispiel 2: Ersetzen Sie NA-Werte durch Durchschnittswerte in mehreren Spalten
Der folgende Code zeigt, wie die NA-Werte in den Punkt- und Blockspalten durch ihre jeweiligen Spaltendurchschnitte ersetzt werden:
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
Beachten Sie, dass die NA-Werte in den Punkt- und Blockspalten beide durch ihre jeweiligen Spaltenmittelwerte ersetzt wurden.
Beispiel 3: Ersetzen Sie NA-Werte durch Durchschnittswerte in allen numerischen Spalten
Der folgende Code zeigt, wie die NA-Werte in jeder numerischen Spalte durch ihren jeweiligen Durchschnittswert ersetzt werden:
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
Beachten Sie, dass die NA-Werte in allen numerischen Spalten durch ihre jeweiligen Spaltenmittelwerte ersetzt wurden.
Die einzige Spalte, die nicht numerisch war (Spieler), blieb unverändert.
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Aufgaben in dplyr ausführen:
So filtern Sie Zeilen, die eine bestimmte Zeichenfolge enthalten, mit dplyr
So berechnen Sie relative Häufigkeiten mit dplyr
So wählen Sie mit dplyr die erste Zeile nach Gruppe aus