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