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

Einen Kommentar hinzufügen

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