3.6 Selektion von Spalten/Zeilen in dataframes
Man kann auf einen einzelnen Vektor des mtcars
dataframes zugreifen, indem man den Namen des Datensatzes mit dem $
und weiterhin mit dem Spaltennamen verknüpft:
# Zeige mit die Pferdestärken (hp) der Fahrzeuge an
$hp
mtcars## [1] 110 110 93 110 175 105 245 62 95 123 123 180 180 180 205 215 230 66 52
## [20] 65 97 150 150 245 175 66 91 113 264 175 335 109
Das Ergebnis ist ein Vektor, mit dem wir die bekannten Vektorfunktionen anwenden können. Die eckige Zahl zu Beginn der Zeile steht dabei für das i
te Element des Vektors. Die Zahl 110 steht also auf der Position (dem Index) [1] und die Zahl 245 and Position [24]. Die Darstellung erleichert es einen Überblick über die Anzahl an Elementen zu bekommen.
mean(mtcars$hp)
## [1] 146.6875
Die Autos haben im Mittel also 146 PS, bereits 1974 😎
Auch mit []
kann auf Vektoren in einem dataframe zugegriffen werden. Der Spaltenname muss hierbei jedoch in ""
gesetzt werden.
head(mtcars["hp"], 5)
## hp
## Mazda RX4 110
## Mazda RX4 Wag 110
## Datsun 710 93
## Hornet 4 Drive 110
## Hornet Sportabout 175
Wenn wir die Position der Spalte hp
kennen genügt aber auch die Zahl
head(mtcars[4], 5)
## hp
## Mazda RX4 110
## Mazda RX4 Wag 110
## Datsun 710 93
## Hornet 4 Drive 110
## Hornet Sportabout 175
Last but not least, eine letzte Möglichkeit Daten zu spezifizieren ist durch das Setzen eines Kommas:
# Wähle die ersten zwei Zeilen aus aber ALLE Spalten
head(mtcars[1:2, ], 5)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21 6 160 110 3.9 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4
# Wähle die ersten zwei Spalten aus aber ALLE Zeilen
head(mtcars[ ,1:2], 5)
## mpg cyl
## Mazda RX4 21.0 6
## Mazda RX4 Wag 21.0 6
## Datsun 710 22.8 4
## Hornet 4 Drive 21.4 6
## Hornet Sportabout 18.7 8
Der Abschnitt vor dem ,
bezieht sich also auf die Zeilen und danach auf die Spalten.
Mit subset()
kann man noch spezifischer auf den Inhalt eines dataframes zugreifen und auch mit logischen Operatoren arbeiten. Es ist eine der wichtigsten Funktionen um auf Daten zurückzugreifen.
Argument | Beschreibung |
---|---|
x |
Name des dataframes |
subset |
Ein logischer Vektor der Werte die man behalten möchte |
select |
Die Spalten die man behalten möchte |
# Wähle nur Autos mit mehr als 5 Zylinder aus
head(subset(mtcars,
subset = cyl > 5), 5)
## 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
## 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
# Wähle nur Autos mit mehr als 5 Zylinder & > 100 PS aus
head(subset(mtcars,
subset = cyl > 5 &
> 100), 5)
hp ## 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
## 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
# Wähle nur Autos mit mehr als 5 Zylinder & > 100 PS aus & dabei weniger als 15 Meilen pro Gallone fahren
head(subset(mtcars,
subset = cyl > 5 &
> 100 &
hp < 15), n = 5)
mpg ## mpg cyl disp hp drat wt qsec vs am gear carb
## Duster 360 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4
## Cadillac Fleetwood 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4
## Lincoln Continental 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4
## Chrysler Imperial 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4
## Camaro Z28 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4
Wenn ihr also mit richtigen (unter heutigen Gesichtspunkten) Drecksschleudern rumfahren wollt, dann habt ihr durch logisches Filtern eine gute Auswahl getroffen. Diese fünf Autos erfüllen unsere drei gesetzten Kriterien.
Hier findet ihr eine Auflistung der logischen Operatoren in R:
Logischer Operator | Bedeutung |
---|---|
== |
Gleich |
!= |
Nicht gleich |
< |
Kleiner als |
<= |
Kleiner als oder gleich |
> |
Größer als |
>= |
Größer als oder gleich |
| |
Oder |
! |
Nicht |
%in% |
Durchsuche in |
Mit der Hilfe von &
(UND), |
(ODER), %in%
(VIELE ODER ARGUMENTE) können Abfragen wie >
oder <
ergänzt werden.