Egal ob du vergleichst, wie unterschiedliche Zielgruppen auf Marketingkampagnen reagieren, einen bestimmten Zeitraum betrachtest oder Informationen zu ausgewählten Produkten aus dem Bestand ziehst: Mit Subsetting holst du gezielt die relevanten Beobachtungen aus deinem Dataset heraus. R ist dafür ein starkes Tool – Subsetting ist damit einfach und intuitiv. Am Ende dieses Tutorials weißt du genau, wie du die Informationen aus deinem Dataset extrahierst, die du brauchst.
Beim Subsetting änderst du deine Daten nicht, sondern wählst nur den Teil aus, der für dein Ziel am wichtigsten ist. Grundsätzlich gibt es drei Wege, um Zeilen und Spalten zu subsetten – nach Index, nach Name und nach Wert.
Zeilen und Spalten nach Index subsetten
Eine Möglichkeit ist das Subsetting über die Indizes deines Datasets. Das entspricht Formulierungen wie „die erste Zeile“, „alle Zeilen in der zweiten und fünften Spalte“ oder „die erste Zeile in den Spalten zwei bis fünf“. Schauen wir uns das am Dataset iris in R an. Laut Dokumentation „[g]ibt dieses berühmte (Fisher- oder Anderson-)Iris-Dataset die Messungen in Zentimetern der Variablen Kelchblattlänge und -breite sowie Kronblattlänge und -breite für jeweils 50 Blüten aus 3 Iris-Arten an. Die Arten sind Iris setosa, versicolor und virginica.“
Zum Subsetten verwendest du eckige Klammern hinter deinem Dataset-Objekt. Die Zeilen werden als erstes Element in den Klammern angegeben, die Spalten als zweites – getrennt durch ein Komma:
data[rows, columns]
Zeilen und Spalten nach Namen subsetten
In R haben die Zeilen und Spalten deines Datasets Namensattribute. Zeilennamen werden selten genutzt und liefern standardmäßig Indizes – Ganzzahlen von 1 bis zur Zeilenanzahl deines Datasets –, so wie du es oben gesehen hast. Wenn du zum Beispiel rownames() auf das iris-Dataset anwendest, siehst du, dass sie einfach von 1 bis 150 durchnummeriert sind:
> rownames(iris)
[1] \"1\" \"2\" \"3\" \"4\" \"5\" \"6\" \"7\" \"8\" \"9\" \"10\" \"11\" \"12\" \"13\" \"14\"
[15] \"15\" \"16\" \"17\" \"18\" \"19\" \"20\" \"21\" \"22\" \"23\" \"24\" \"25\" \"26\" \"27\" \"28\"
[29] \"29\" \"30\" \"31\" \"32\" \"33\" \"34\" \"35\" \"36\" \"37\" \"38\" \"39\" \"40\" \"41\" \"42\"
[43] \"43\" \"44\" \"45\" \"46\" \"47\" \"48\" \"49\" \"50\" \"51\" \"52\" \"53\" \"54\" \"55\" \"56\"
[57] \"57\" \"58\" \"59\" \"60\" \"61\" \"62\" \"63\" \"64\" \"65\" \"66\" \"67\" \"68\" \"69\" \"70\"
[71] \"71\" \"72\" \"73\" \"74\" \"75\" \"76\" \"77\" \"78\" \"79\" \"80\" \"81\" \"82\" \"83\" \"84\"
[85] \"85\" \"86\" \"87\" \"88\" \"89\" \"90\" \"91\" \"92\" \"93\" \"94\" \"95\" \"96\" \"97\" \"98\"
[99] \"99\" \"100\" \"101\" \"102\" \"103\" \"104\" \"105\" \"106\" \"107\" \"108\" \"109\" \"110\" \"111\" \"112\"
[113] \"113\" \"114\" \"115\" \"116\" \"117\" \"118\" \"119\" \"120\" \"121\" \"122\" \"123\" \"124\" \"125\" \"126\"
[127] \"127\" \"128\" \"129\" \"130\" \"131\" \"132\" \"133\" \"134\" \"135\" \"136\" \"137\" \"138\" \"139\" \"140\"
[141] \"141\" \"142\" \"143\" \"144\" \"145\" \"146\" \"147\" \"148\" \"149\" \"150\"
> nrow(iris)
[1] 150
Zeilennamen sind vor allem in kleinen Datasets üblich, um Beobachtungen klar zu kennzeichnen. In einem kleinen Datensatz mit Gesundheitsinformationen einer Arztpraxis könnten die Zeilennamen zum Beispiel die vollständigen Namen der Patientinnen und Patienten sein.
Spaltennamen hingegen gibt es praktisch in jedem Dataset. Du kannst sie mit colnames() oder names() abrufen:
colnames(iris)
[1] \"Sepal.Length\" \"Sepal.Width\" \"Petal.Length\" \"Petal.Width\" \"Species\"
names(iris)
[1] \"Sepal.Length\" \"Sepal.Width\" \"Petal.Length\" \"Petal.Width\" \"Species\"
Um per Namen nach Zeilen und Spalten zu subsetten, verwendest du erneut die eckigen Klammern hinter deinem Dataset-Objekt:
Wichtig: Sowohl Zeilen- als auch Spaltennamen sind Strings. Du musst also einfache oder doppelte Anführungszeichen verwenden!
Zeilen und Spalten nach Wert subsetten
Das Subsetting nach Werten ist oft am flexibelsten. So kannst du zum Beispiel die Daten zu Iris setosa mit einer Bedingung wie dieser herausfiltern:
> iris[iris$Species == \"setosa\", ]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
...
47 5.1 3.8 1.6 0.2 setosa
48 4.6 3.2 1.4 0.2 setosa
49 5.3 3.7 1.5 0.2 setosa
50 5.0 3.3 1.4 0.2 setosa
Bedingungen wie iris$Species == \"setosa\" gehören in das Zeilen-Element der eckigen Klammern (also das erste Element vor dem Komma). Zusätzlich zur Bedingung im ersten Element kannst du im zweiten Element die Spalten per Index oder Name auswählen. Probiere in der Konsole unten, nur die Kelchblatt-Messungen von Iris setosa zu selektieren:
Recap
In diesem Tutorial hast du:
- Gelernt, wie du deinen Data Frame nach Index subsettest. Zeilen und Spalten sind als Ganzzahlen von 1 bis zur jeweiligen Anzahl indexiert.
- Gelernt, wie du nach Namen subsettest. Du hast gesehen, dass Zeilennamen selten explizit gesetzt werden und Spaltennamen vom Typ Character sind.
- Gelernt, Bedingungen im Zeilen-Element innerhalb der eckigen Klammern zu nutzen, um nach Werten zu subsetten.
- Gelernt, diese Methoden zu kombinieren, um flexibler zu subsetten (z. B. Bedingungen für Zeilen und Subsetting nach Index oder Name für Spalten).
Unten findest du Übungen, um das Gelernte zu festigen. Übung macht den Meister – leg los!
Übungsaufgaben
Wähle alle Beobachtungen aus, bei denen die Kelchblattbreite größer ist als die Kronblattlänge.
Wähle alle Iris versicolor aus, deren Kelchblattbreite größer ist als die durchschnittliche Kelchblattbreite über alle Arten.
Gib die durchschnittliche Kelchblattbreite für alle Iris virginica an, deren Kronblattlänge kleiner als 5 Zentimeter ist.
Du willst weitere Wege kennenlernen, um Insights aus deinen Daten zu ziehen? Schau dir diese Kurse auf DataCamp an!
Sieh dir auch unser Tutorial Merging Datasets in R an.

Egal ob du vergleichst, wie unterschiedliche Zielgruppen auf Marketingkampagnen reagieren, einen bestimmten Zeitraum betrachtest oder Informationen zu ausgewählten Produkten aus dem Bestand ziehst: Mit Subsetting holst du gezielt die relevanten Beobachtungen aus deinem Dataset heraus. R ist dafür ein starkes Tool – Subsetting ist damit einfach und intuitiv. Am Ende dieses Tutorials weißt du genau, wie du die Informationen aus deinem Dataset extrahierst, die du brauchst.
Beim Subsetting änderst du deine Daten nicht, sondern wählst nur den Teil aus, der für dein Ziel am wichtigsten ist. Grundsätzlich gibt es drei Wege, um Zeilen und Spalten zu subsetten – nach Index, nach Name und nach Wert.
Zeilen und Spalten nach Index subsetten
Eine Möglichkeit ist das Subsetting über die Indizes deines Datasets. Das entspricht Formulierungen wie „die erste Zeile“, „alle Zeilen in der zweiten und fünften Spalte“ oder „die erste Zeile in den Spalten zwei bis fünf“. Schauen wir uns das am Dataset
irisin R an. Laut Dokumentation „[g]ibt dieses berühmte (Fisher- oder Anderson-)Iris-Dataset die Messungen in Zentimetern der Variablen Kelchblattlänge und -breite sowie Kronblattlänge und -breite für jeweils 50 Blüten aus 3 Iris-Arten an. Die Arten sind Iris setosa, versicolor und virginica.“Zum Subsetten verwendest du eckige Klammern hinter deinem Dataset-Objekt. Die Zeilen werden als erstes Element in den Klammern angegeben, die Spalten als zweites – getrennt durch ein Komma:
Zeilen und Spalten nach Namen subsetten
In R haben die Zeilen und Spalten deines Datasets Namensattribute. Zeilennamen werden selten genutzt und liefern standardmäßig Indizes – Ganzzahlen von 1 bis zur Zeilenanzahl deines Datasets –, so wie du es oben gesehen hast. Wenn du zum Beispiel
rownames()auf dasiris-Dataset anwendest, siehst du, dass sie einfach von 1 bis 150 durchnummeriert sind:Zeilennamen sind vor allem in kleinen Datasets üblich, um Beobachtungen klar zu kennzeichnen. In einem kleinen Datensatz mit Gesundheitsinformationen einer Arztpraxis könnten die Zeilennamen zum Beispiel die vollständigen Namen der Patientinnen und Patienten sein.
Spaltennamen hingegen gibt es praktisch in jedem Dataset. Du kannst sie mit der Funktion
colnames()odernames()abrufen:Um dein Dataset anhand der Namen von Zeilen und Spalten zu subsetten, verwendest du wieder die eckigen Klammern – vorangestellt von deinem Dataset-Objekt:
Wichtig: Sowohl Zeilen- als auch Spaltennamen sind Strings. Du musst also einfache oder doppelte Anführungszeichen verwenden!
Zeilen und Spalten nach Wert subsetten
Das Subsetting nach Werten ist oft am flexibelsten. So kannst du zum Beispiel die Daten zu Iris setosa mit einer Bedingung wie dieser herausfiltern:
Bedingungen wie
iris$Species == \"setosa\"gehören in das Zeilen-Element der eckigen Klammern (also das erste Element vor dem Komma). Zusätzlich zur Bedingung im ersten Element kannst du im zweiten Element die Spalten per Index oder Name auswählen. Probiere in der Konsole unten, nur die Kelchblatt-Messungen von Iris setosa zu selektieren:Recap
In diesem Tutorial hast du:
Unten findest du Übungen, um das Gelernte zu festigen. Übung macht den Meister – leg los!
Übungsaufgaben
Wähle alle Beobachtungen aus, bei denen die Kelchblattbreite größer ist als die Kronblattlänge.
Wähle alle Iris versicolor aus, deren Kelchblattbreite größer ist als die durchschnittliche Kelchblattbreite über alle Arten.
Gib die durchschnittliche Kelchblattbreite für alle Iris virginica an, deren Kronblattlänge kleiner als 5 Zentimeter ist.
Du willst weitere Wege kennenlernen, um Insights aus deinen Daten zu ziehen? Schau dir diese Kurse auf DataCamp an!
Sieh dir auch unser Tutorial Merging Datasets in R an.