Oft möchten Sie möglicherweise die Anzahl der Beobachtungen (oder Zeilen) nach Gruppen in R zählen. Glücklicherweise ist dies mit der Funktion count() aus der dplyr-Bibliothek einfach zu bewerkstelligen.
library …
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
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.
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.
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.
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.
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.
Oft möchten Sie möglicherweise die Anzahl der Beobachtungen (oder Zeilen) nach Gruppen in R zählen. Glücklicherweise ist dies mit der Funktion count() aus der dplyr-Bibliothek einfach zu bewerkstelligen.
library …