Datensätze Sitemap Auswertungen von Datensätzen

Umgang mit Datensätzen in R

In R kann man beliebige Teile eines Datensatzes – einzelne Zeilen, Spalten und Zellen, aber auch Gruppen und Kombinationen dieser – auswählen und anzeigen, aber auch in verschiedener Weise ändern.

Datensatzspalten

Auf die einzelnen Spalten eines Datensatzes kann man in verschiedener Weise zugreifen. Wenn die Spalten Namen in der Kopfzeile haben, kann man den $-Operator verwenden (wie wir hier schon gesehen haben) oder auch die Funktion with(), die (eine Variable für) einen Datensatz als erstes Argument hat und als zweites Argument einen Spaltennamen des Datensatzes oder eine Funktion, die diesen Spaltennamen als Argument nimmt:

Man kann auch auf Spalten über ihren Index zugreifen. Dieser ist eine Zahl in eckigen Klammern, die die Position der Spalte innerhalb des Datensatzes von links zählend identifiziert, z.B. wird die erste Spalte von hund.kk.df durch hund.kk.df[1] identifiziert.

Wenn der Datensatz eine Kopfzeile hat, kann man auch auf eine Spalte zugreifen, indem man statt eines numerischen Index den Spaltennamen in Anführungsstrichen zwischen die eckigen Klammern setzt:

Indizierung

Durch Indizes ermöglicht R den Zugriff auf die Inhalte von Datensätzen in vielfältiger Weise. Es gibt zwei Typen von Indizes in R, numerische und logische, deren Verwendungen im Folgenden anhand von zahlreichen Beispielen gezeigt wird.

Numerische Index-Vektoren

Der Index einer Datensatzspalte kann nicht nur eine einzige Zahl sein sondern auch ein beliebiger Vektor von Zahlen zwischen eckigen Klammern. Ein solcher Ausdruck heißt deswegen auch ein Index-Vektor (zur Erinnerung: in R ist auch eine einzige Zahl ein Vektor). Damit kann man nicht nur auf einzelne Datensatzspalten sondern auch auf mehrere Spalten gleichzeitig über ihre Indizes zugreifen:

Auch auf beliebige Elemente von Spalten (d.h. auf die Zellen des Datensatzes) kann man mittels Index-Vektoren zugreifen (ein Beispiel haben wir hier schon gesehen). Der Index-Vektor kann auch aus einem Funktionsaufruf bestehen, sofern der Rückgabewert dieser ein Vektor von Zahlen ist. Hier einige Beispiele:

Steht ein Minuszeichen vor dem Index-Vektor, bedeutet das den Ausschluss der im Vektor identifizierten Positionen, d.h. alle übrigen Positionen werden ausgewählt:

Logische Index-Vektoren

Die Elemente eines Index-Vektors können nicht nur Zahlen sein sondern auch die Wahrheitswerte TRUE und FALSE. Der Wert TRUE bedeutet, dass der Wert der entsprechenden Position (z.B. der Zelle einer Datensatzspalte) ausgewählt wird, der Wert FALSE bedeutet, dass der Wert der entsprechenden Position ausgeschlossen wird. Anders als die Zahlen in einem numerischen Index-Vektor werden Wahrheitswerte in einem Index-Vektor, der kürzer ist als das damit indizierte Objekt (z.B. ein Datensatz oder eine Spalte eines Datensatzes), der Reihe nach wiederholt:

Aber normalerweise verwendet man TRUE und FALSE nicht direkt in Index-Vektoren, sondern man bildet solche Vektoren mit Hilfe der folgenden Operatoren, die Funktionen sind, die einen Wahrheitswert (oder Vektor von Wahrheitswerten) als Rückgabewert haben:

Mit solchen Operatoren kann man Bedingungen formulieren, die sich auf die Eigenschaften des Datensatzes beziehen, um Teile des Datensatzes auszuwählen (in den folgenden Beispielen lassen wir mit length() jeweils nur die Anzahl der ausgewählten Elemente (hier Treffer) ausgeben, nicht die Elemente selbst, um nicht sehr lange Ausgaben zu haben):

Die Funktionen which(), which.min(), which.max()

Mit der eingebauten Funktion which() kann man Positionen innerhalb eines Vektors – daher auch innerhalb einer Datensatzspalte – finden, die logische Bedingungen erfüllen.

Beispiele:

Für die Auswahl des kleinsten bzw. größten numerischen Werts eines Vektors gibt es die von which() abgeleiteten Funktionen which.min() und which.max(), die kürzere Eingaben ermöglichen:

(Die Funktion which.max() haben wir schon als Möglichkeit kennengelernt, den Modalwert einer Häufigkeitsverteilungen zu berechnen, wobei, wie auch dort betont wurde, eigentlich nur die Position (Zelle) des Modalwerts innerhalb des Vektors der Häufigkeiten berechnet wird und nur durch „Bennenungen“ der Elemente des Vektors der tatsächliche Modalwert auch ausgegeben wird.)

Datensatzzeilen

Anders als bei Datensatzspalten kann man auf Datensatzzeilen nicht mit Hilfe des $-Operators oder der with()-Funktion zugreifen sondern nur über die Indizierung des Datensatzes. Aber es gibt einen Unterschied zur bisherigen Indizierung: Um Zeilen von Spalten zu unterscheiden, gibt es zwei Stellen für Index-Vektoren zwischen den eckigen Klammern, die durch ein Komma getrennt sind. Der erste (linke) Index-Vektor bestimmt die Zeilenauswahl, der zweite (rechte) die Spaltenauswahl. Fehlt einer der Index-Vektoren (wobei das Komma nicht fehlen darf!), bedeutet das, dass alle Zellen der entsprechenden Komponente des Datensatzes (also der Zeile bzw. der Spalte) ausgegeben werden (N.B.: als Vektor, im Gegensatz zur Ausgabe von Spalten durch einen Index-Vektor). Hier einige Beispiele:

Über solche Doppelindizes kann man auch die Datensatzzeilen bezüglich der Reihenfolge einer gegegebenen Spalte mit Hilfe der Funktion order() sortieren, wie wir schon gesehen haben; hier noch einige Beispiele:

Anmerkungen:

Datensätze ändern

Durch Kombinationen von Indizierung und Zuweisung kann man Datensätze ändern, um z.B. fehlerhafte Angaben zu korrigieren oder löschen, oder neue Merkmale oder Beobachtungen aufzunehmen. Hier einige Beispiele:

Datensätze Sitemap Auswertungen von Datensätzen