Subset
In dieser Session wollen wir lernen, wie wir unsere Daten filtern können. Dies ist nützlich, um unsere Daten in Teildatensätze zu zerlegen, wenn wir z.B. nur bestimmte Untergruppen (Altersgruppen, etc.) analysieren wollen.
Die subset-Funktion
Als Basisfunktion zur Filterung von Daten in R steht uns die subset()-Funktion zur Verfügung. Wir müssen an diese Funktion 2 Hauptargumente übergeben:
– das gewünschte Datenset, welches gefiltert werden soll
– wonach das Datenset gefiltert werden soll
Zuerst erstellen wir uns wieder ein Dataframe:
Data <- mtcars
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
Nun wollen wir beginnen, das Datenset zu filtern. Hierzu benötigen wir die Vergleichsoperatoren, die wir bereits kennengelernt haben:
- ist gleich: ==
- ist nicht gleich: !=
- kleiner als: <
- größer als: >
- kleiner gleich: <=
- größer gleich: >=
Zuerst wollen wir Data nach Autos filtern, welche 150 PS (“hp”) oder mehr haben:
PS.150 <- subset(Data, hp >= 150)
head(PS.150)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.44 17.02 0 0 3 2
## Duster 360 14.3 8 360.0 245 3.21 3.57 15.84 0 0 3 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.07 17.40 0 0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.73 17.60 0 0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.78 18.00 0 0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.25 17.98 0 0 3 4
Nun suchen wir die Autos die weniger als 5 Gänge (“gear”) besitzen:
Gear <- subset(Data, gear < 5)
head(Gear)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
Und jetzt wollen wir noch ein Auto finden, welches genau 360 km/h auf dem Display stehen hat:
Display.360 <- subset(Data, disp == 360)
head(Display.360)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Hornet Sportabout 18.7 8 360 175 3.15 3.44 17.02 0 0 3 2
## Duster 360 14.3 8 360 245 3.21 3.57 15.84 0 0 3 4
Kombinationen der Vergleichsoperatoren
Wir können in einem Schritt natürlich auch nach mehreren Kriterien filtern. Hierzu benötigen wir 2 weitere wichtige Operatoren:
- und: &
- oder: | (Tastenkombination: AltGr + <)
Wir wollen nun nach Autos suchen, welche weniger als 18 Meilen pro Gallone Treibstoff (“mpg”) fahren und genau 4 Gänge haben:
MPG <- subset(Data, mpg <= 18 & gear == 4)
head(MPG)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Merc 280C 17.8 6 167.6 123 3.92 3.44 18.9 1 0 4 4
Den Möglichkeiten der Kombinationen sind hier keine Grenzen gesetzt. Ihr könnt also nicht nur zwei sondern auch weitaus mehr Kombinationen von Vergleichsoperatoren zum filtern der Daten verwenden.