Comment filtrer les lignes dans R



Souvent, vous pourriez être intéressé par un sous-ensemble d’un bloc de données en fonction de certaines conditions dans R. Heureusement, cela est facile à faire en utilisant la fonction filter() du package dplyr .

library(dplyr)

Ce tutoriel explique plusieurs exemples d’utilisation pratique de cette fonction à l’aide de l’ensemble de données dplyr intégré appelé starwars :

#view first six rows of starwars dataset
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 

Exemple 1 : filtrer les lignes égales à une certaine valeur

Le code suivant montre comment filtrer l’ensemble de données pour les lignes où la variable « espèce » est égale à Droid.

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 

Nous pouvons voir que 5 lignes de l’ensemble de données remplissent cette condition, comme indiqué par #A tibble: 5 x 13 .

Exemple 2 : filtrer les lignes à l’aide de « Et »

Nous pouvons également filtrer les lignes où l’espèce est Droid et la couleur des yeux est rouge :

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 

Nous pouvons voir que 3 lignes de l’ensemble de données remplissent cette condition.

Exemple 3 : filtrer les lignes à l’aide de « Ou »

Nous pouvons également filtrer les lignes où l’espèce est Droid ou la couleur des yeux est rouge :

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  

Nous pouvons voir que 7 lignes de l’ensemble de données remplissent cette condition.

Exemple 4 : filtrer les lignes avec des valeurs dans une liste

Nous pouvons également filtrer les lignes où la couleur des yeux figure dans une liste de couleurs :

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  

Nous pouvons voir que 35 lignes de l’ensemble de données avaient une couleur des yeux bleue, jaune ou rouge.

Connexe : Comment utiliser l’opérateur %in% dans R (avec exemples)

Exemple 5 : filtrer les lignes en utilisant inférieur ou supérieur à

Nous pouvons également filtrer les lignes en utilisant des opérations inférieures ou supérieures à sur des variables numériques :

#find rows where height is greater than 250
starwars %>% 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   

#find rows where height is between 200 and 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 

#find rows where height is above the average height
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 

Vous pouvez trouver la documentation complète de la fonction filter() ici .

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *