Hoe een dataframe te filteren zonder na-lijnen te verliezen met behulp van dplyr


U kunt de volgende basissyntaxis gebruiken om een dataframe te filteren zonder rijen te verliezen die NA-waarden bevatten met behulp van functies in de dplyr- en Tidyr -pakketten in R:

 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 ))

Merk op dat deze formule de functie Replace_na() uit het Tidyr- pakket gebruikt om NA-waarden naar TRUE te converteren, zodat ze tijdens het filteren niet uit het dataframe worden verwijderd.

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: dataframe filteren zonder NA-rijen te verliezen met behulp van dplyr

Stel dat we het volgende dataframe in R hebben dat informatie bevat over verschillende basketbalspelers:

 #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

Stel nu dat we de functie filter() uit het dplyr- pakket gebruiken om het dataframe te filteren, zodat het alleen die rijen bevat waarvan de waarde in de teamkolom niet gelijk is aan A:

 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

Houd er rekening mee dat elke rij waarin de waarde in de teamkolom gelijk is aan A is gefilterd, inclusief rijen waarin de waarde in de teamkolom gelijk is aan NA.

Als we rijen willen filteren waarin team gelijk is aan A en rijen met NA-waarden willen behouden , kunnen we de volgende syntaxis gebruiken:

 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

Merk op dat elke rij waar de waarde in de teamkolom gelijk is aan A werd gefilterd, maar we hebben de rijen behouden waar de waarde in de teamkolom gelijk is aan NA.

Opmerking : u kunt de volledige documentatie voor de functie Tidyr Replace_na() hier vinden.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende functies in dplyr kunt uitvoeren:

Filteren op rijnummer met dplyr
Hoe u op meerdere voorwaarden kunt filteren met behulp van dplyr
Hoe u een „niet inbegrepen“ filter gebruikt in dplyr

Einen Kommentar hinzufügen

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