Jak filtrować wiersze w r


Często możesz być zainteresowany podzbiorem ramki danych opartym na pewnych warunkach w R. Na szczęście można to łatwo zrobić za pomocą funkcji filter() z pakietu dplyr .

 library(dplyr)

W tym samouczku wyjaśniono kilka przykładów praktycznego wykorzystania tej funkcji przy użyciu wbudowanego zbioru danych dplyr zwanego 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 

Przykład 1: Filtruj wiersze o określonej wartości

Poniższy kod pokazuje, jak filtrować zbiór danych pod kątem wierszy, w których zmienna „gatunek” jest równa 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 

Widzimy, że 5 wierszy zbioru danych spełnia ten warunek, jak wskazuje #A tibble: 5 x 13 .

Przykład 2: Filtruj wiersze za pomocą „I”

Możemy również filtrować wiersze, w których gatunkiem jest Droid , a kolor oczu jest czerwony:

 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 

Widzimy, że 3 wiersze w zbiorze danych spełniają ten warunek.

Przykład 3: Filtruj wiersze za pomocą „Or”

Możemy także filtrować wiersze, w których gatunkiem jest Droid lub kolor oczu jest czerwony:

 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  

Widzimy, że 7 wierszy w zbiorze danych spełnia ten warunek.

Przykład 4: Filtruj wiersze z wartościami na liście

Możemy także filtrować wiersze, w których kolor oczu pojawia się na liście kolorów:

 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  

Widzimy, że 35 wierszy w zbiorze danych miało kolor oczu niebieski, żółty lub czerwony.

Powiązane: Jak używać operatora %in% w R (z przykładami)

Przykład 5: Filtruj wiersze, używając wartości mniejszej niż lub większej niż

Możemy także filtrować wiersze za pomocą operacji „mniej niż” lub „większe niż” na zmiennych numerycznych:

 #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 gray black NA female Kamino   
4 Grie~ 216 159 none brown, wh~ green, y~ NA male Kalee    
5 Tion~ 206 80 none gray 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

Pełną dokumentację funkcji filter() znajdziesz tutaj .

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *