So filtern Sie Zeilen in R

Von Fabian
Kategorie: R
Tags: dplyr
Lesezeit: 5 Minuten

Oft sind Sie daran interessiert, ein Dataframe basierend auf bestimmten Bedingungen in R zu unterteilen. Glücklicherweise ist dies mit der Funktion filter() aus dem Paket dplyr einfach zu bewerkstelligen.

library(dplyr)

Dieses Tutorial erklärt, einige Beispiele dafür, wie diese Funktion in der Praxis zu verwenden, um den eingebauten in dplyr Dataset namens starwars mit:

# Die ersten sechs Zeilen des Starwars-Datensatzes anzeigen
head(starwars)

# A tibble: 6 x 13
  name  height  mass hair_color skin_color eye_color birth_year gender homeworld

1 Luke~    172    77 blond      fair       blue            19   male   Tatooine 
2 C-3PO    167    75 <NA>       gold       yellow         112   <NA>   Tatooine 
3 R2-D2     96    32 <NA>       white, bl~ red             33   <NA>   Naboo    
4 Dart~    202   136 none       white      yellow          41.9 male   Tatooine 
5 Leia~    150    49 brown      light      brown           19   female Alderaan 
6 Owen~    178   120 brown, gr~ light      blue            52   male   Tatooine 
# ... with 4 more variables: species , films , vehicles ,
#   starships 

Beispiel 1: Filterzeilen, die einem bestimmten Wert entsprechen

Der folgende Code zeigt, wie der Datensatz nach Zeilen gefiltert wird, in denen die Variable 'species' gleich Droid ist.

starwars %>% filter(species == 'Droid')

# A tibble: 5 x 13
  name  height  mass hair_color skin_color eye_color birth_year gender homeworld

1 C-3PO    167    75        gold       yellow           112    Tatooine 
2 R2-D2     96    32        white, bl~ red               33    Naboo    
3 R5-D4     97    32        white, red red               NA    Tatooine 
4 IG-88    200   140 none       metal      red               15 none        
5 BB8       NA    NA none       none       black             NA none        
# ... with 4 more variables: species , films , vehicles ,
#   starships 

Wir können sehen, dass 5 Zeilen im Datensatz diese Bedingung erfüllten, wie durch #A tibble: 5 x 13 angezeigt.

Beispiel 2: Zeilen mit 'And' filtern

Wir können auch nach Zeilen filtern, in denen die Art 'Droid' und die Augenfarbe 'red' ist:

starwars %>% filter(species == 'Droid' & eye_color == 'red')

# A tibble: 3 x 13
  name  height  mass hair_color skin_color eye_color birth_year gender homeworld

1 R2-D2     96    32 <NA>       white, bl~ red               33 <NA>  Naboo    
2 R5-D4     97    32 <NA>       white, red red               NA <NA>  Tatooine 
3 IG-88    200   140 none       metal      red               15 none  <NA>      
# ... with 4 more variables: species , films , vehicles ,
#   starships 

Wir können sehen, dass 3 Zeilen im Datensatz diese Bedingung erfüllt haben.

Beispiel 3: Zeilen mit 'Or' filtern

Wir können auch nach Zeilen filtern, in denen die Art 'Droid' oder die Augenfarbe 'red' ist:

starwars %>% filter(species == 'Droid' | eye_color == 'red')

# A tibble: 7 x 13
  name  height  mass hair_color skin_color eye_color birth_year gender homeworld

1 C-3PO    167    75 <NA>       gold       yellow           112 <NA>   Tatooine 
2 R2-D2     96    32 <NA>       white, bl~ red               33 <NA>   Naboo    
3 R5-D4     97    32 <NA>       white, red red               NA <NA>   Tatooine 
4 IG-88    200   140 none       metal      red               15 none   <NA>     
5 Bossk    190   113 none       green      red               53 male   Trandosha
6 Nute~    191    90 none       mottled g~ red               NA male   Cato Nei~
7 BB8       NA    NA none       none       black             NA none   <NA>     
# ... with 4 more variables: species , films , vehicles ,
#   starships  

Wir können sehen, dass 7 Zeilen im Datensatz diese Bedingung erfüllten.

Beispiel 4: Zeilen mit Werten in einer Liste filtern

Wir können auch nach Zeilen filtern, in denen die Augenfarbe in einer Liste von Farben enthalten ist:

starwars %>% filter(eye_color %in% c('blue', 'yellow', 'red'))

# A tibble: 35 x 13
   name  height  mass hair_color skin_color eye_color birth_year gender

 1 Luke~    172    77 blond      fair       blue            19   male  
 2 C-3PO    167    75 <NA>       gold       yellow         112   <NA> 
 3 R2-D2     96    32 <NA>       white, bl~ red             33   <NA>  
 4 Dart~    202   136 none       white      yellow          41.9 male  
 5 Owen~    178   120 brown, gr~ light      blue            52   male  
 6 Beru~    165    75 brown      light      blue            47   female
 7 R5-D4     97    32 <NA>       white, red red             NA   <NA> 
 8 Anak~    188    84 blond      fair       blue            41.9 male  
 9 Wilh~    180    NA auburn, g~ fair       blue            64   male  
10 Chew~    228   112 brown      unknown    blue           200   male  
# ... with 25 more rows, and 5 more variables: homeworld , species ,
#   films , vehicles , starships  

Wir können sehen, dass 35 Zeilen im Datensatz eine Augenfarbe von Blau, Gelb oder Rot hatten.

Beispiel 5: Filtern von Zeilen mit weniger als oder mehr als

Wir können Zeilen auch filtern, indem wir 'less than' or 'greater than' Operationen für numerische Variablen verwenden:

#Finden Sie Zeilen, in denen die Höhe größer als 250 ist
Sstarwars %>% filter(height > 250)

# A tibble: 1 x 13
  name  height  mass hair_color skin_color eye_color birth_year gender homeworld

1 Yara~    264    NA none       white      yellow            NA male   Quermia  
# ... with 4 more variables: species , films , vehicles ,
#   starships   

#Finden Sie Zeilen mit einer Höhe zwischen 200 und 220
starwars %>% filter(height > 200 & height < 220)

# A tibble: 5 x 13
  name  height  mass hair_color skin_color eye_color birth_year gender homeworld

1 Dart~    202   136 none       white      yellow          41.9 male   Tatooine 
2 Rugo~    206    NA none       green      orange          NA   male   Naboo    
3 Taun~    213    NA none       grey       black           NA   female Kamino   
4 Grie~    216   159 none       brown, wh~ green, y~       NA   male   Kalee    
5 Tion~    206    80 none       grey       black           NA   male   Utapau   
# ... with 4 more variables: species , films , vehicles ,
#   starships 

#Finden Sie Zeilen, in denen die Höhe über der durchschnittlichen Höhe liegt
starwars %>% filter(height > mean(height, na.rm = TRUE))

# A tibble: 51 x 13
   name  height  mass hair_color skin_color eye_color birth_year gender

 1 Dart~    202   136 none       white      yellow          41.9 male  
 2 Owen~    178   120 brown, gr~ light      blue            52   male  
 3 Bigg~    183    84 black      light      brown           24   male  
 4 Obi-~    182    77 auburn, w~ fair       blue-gray       57   male  
 5 Anak~    188    84 blond      fair       blue            41.9 male  
 6 Wilh~    180    NA auburn, g~ fair       blue            64   male  
 7 Chew~    228   112 brown      unknown    blue           200   male  
 8 Han ~    180    80 brown      fair       brown           29   male  
 9 Jabb~    175  1358 <NA>       green-tan~ orange         600   herma~
10 Jek ~    180   110 brown      fair       blue            NA   male  
# ... with 41 more rows, and 5 more variables: homeworld , species ,
#   films , vehicles , starships 

Die vollständige Dokumentation zur Funktion filter() finden Sie hier.

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: