So filtern sie mit dplyr einen datenrahmen, ohne na-zeilen zu verlieren


Sie können die folgende grundlegende Syntax verwenden, um einen Datenrahmen zu filtern, ohne Zeilen mit NA-Werten zu verlieren, indem Sie Funktionen in den dplyr- und Tidyr -Paketen in R verwenden:

 library (dplyr)
library (tidyr)

#filter for rows where team is not equal to 'A' (and keep rows with NA)
df <- df %>% filter((team != ' A ') %>% replace_na( TRUE ))

Beachten Sie, dass diese Formel die Funktion replace_na() aus dem Tidyr- Paket verwendet, um NA-Werte in TRUE umzuwandeln, damit sie beim Filtern nicht aus dem Datenrahmen entfernt werden.

Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.

Beispiel: Datenrahmen filtern, ohne NA-Zeilen zu verlieren, mit dplyr

Angenommen, wir haben den folgenden Datenrahmen in R, der Informationen über verschiedene Basketballspieler enthält:

 #create data frame
df <- data. frame (team=c('A', NA, 'A', 'B', NA, 'C', 'C', 'C'),
                 points=c(18, 13, 19, 14, 24, 21, 20, 28),
                 assists=c(5, 7, 17, 9, 12, 9, 5, 12))

#view data frame
df

  team points assists
1 to 18 5
2 <NA> 13 7
3 A 19 17
4 B 14 9
5 <NA> 24 12
6 C 21 9
7 C 20 5
8 C 28 12

Nehmen wir nun an, wir verwenden die Funktion filter() aus dem dplyr- Paket, um den Datenrahmen so zu filtern, dass er nur die Zeilen enthält, deren Wert in der Teamspalte nicht gleich A ist:

 library (dplyr)

#filter for rows where team is not equal to 'A'
df <- df %>% filter(team != ' A ')

#view updated data frame
df

  team points assists
1 B 14 9
2 C 21 9
3 C 20 5
4 C 28 12

Beachten Sie, dass jede Zeile, in der der Wert in der Teamspalte gleich A ist, gefiltert wurde, einschließlich Zeilen, in denen der Wert in der Teamspalte gleich NA ist.

Wenn wir Zeilen filtern möchten, in denen Team gleich A ist, und Zeilen mit NA-Werten beibehalten möchten , können wir die folgende Syntax verwenden:

 library (dplyr)
library (tidyr)

#filter for rows where team is not equal to 'A' (and keep rows with NA)
df <- df %>% filter((team != ' A ') %>% replace_na( TRUE ))

#view updated data frame
df

  team points assists
1 <NA> 13 7
2 B 14 9
3 <NA> 24 12
4 C 21 9
5 C 20 5
6 C 28 12

Beachten Sie, dass jede Zeile, in der der Wert in der Teamspalte gleich A ist, gefiltert wurde. Wir haben jedoch die Zeilen beibehalten, in denen der Wert in der Teamspalte gleich NA ist.

Hinweis : Die vollständige Dokumentation für die Tidyr-Funktion replace_na() finden Sie hier .

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere allgemeine Funktionen in dplyr ausführen:

So filtern Sie mit dplyr nach Zeilennummer
So filtern Sie mit dplyr nach mehreren Bedingungen
So verwenden Sie einen „nicht enthaltenen“ Filter in dplyr

Einen Kommentar hinzufügen

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