Übungsaufgaben zu Häufigkeitsverteilungen Sitemap Umgang mit Datensätzen

Datensätze

Die Objekte einer statistischen Untersuchung (die sogenannten statistischen Einheiten der Untersuchung) haben in der Regel mehrere Merkmale, deren Ausprägungen für statistische Auswertungen relevant sein können. Eine Beobachtung ist eine Liste der jeweils festgestellten Ausprägungen der relevanten Merkmale einer statistischen Einheit. Ein Standardverfahren in empirischen Wissenschaften ist es, die Gesamtheit der Beobachtungen in tabellarischer Form festzuhalten, für die gilt:

Folglich beinhalten die Zellen jeder Spalte alle beobachteten Ausprägungen des jeweiligen Merkmals (mit anderen Worten: alle beobachteten Werte der jeweiligen Variable) und die Zellen jeder Zeile beinhalten die Gesamtheit der beobachteten Ausprägungen der Merkmale (mit anderen Worten: alle beobachteten Werte der Variablen) einer einzelnen Einheit. Eine solche Tabelle heißt ein Datensatz. Die Erstellung eines Datensatzes ist i.d.R. der Ausgangspunkt für statistische Auswertungen.

In korpuslinguistischen statistischen Untersuchungen bestehen die Beobachtungen aus den Ausprägungen von Kombinationen folgender drei Arten von Korpusmerkmalen:

Solche Beobachtungen gewinnt man durch gezielte Anfragen in ausgewählten Korpora, d.h. die Beobachtungen ergeben sich aus den entsprechenden Treffern. Aus den Treffern und evtl. dazugehörigen Annotationen und Metadaten kann man Datensätze erstellen.

Datensätze in R erstellen

Datensätze kann man in R mit Hilfe der Funktion data.frame() erstellen (der in R verwendete Begriff für einen Datensatz ist data frame). Die Argumente dieser Funktion sind Vektoren, die die Merkmale von Interesse für die Untersuchung darstellen; die Elemente der Vektoren sind folglich die jeweiligen Merkmalsausprägungen. Mit anderen Worten: Die Vektoren stellen die Variablen der Untersuchung und ihre Werte dar, und bilden die Spalten des Datensatzes. Wenn die Vektoren in R-Variablen gespeichert sind und diese Variablen die Argumente von data.frame() sind, dann bilden die Variablennamen die erste Zeile des Datensatzes, die sogenannte Kopfzeile.

Normalerweise gibt man die beobachteten Werte aber nicht direkt als Vektorenelemente in R ein, sondern die Daten werden i.d.R. zunächst in Textdateien in einem tabellarischen Format festgehalten, das z.B. mit einem Tabellenkalkulationsprogramm bearbeitet werden kann. Solche Dateien können mit Hilfe von Funktionen wie read.table() auch in R eingelesen werden und werden dadurch in Datensätze umgewandelt, die anschließend genau wie mit data.frame() erstellte Datensätze in R weiter verarbeitet werden.

In diesem Seminar werden wir Datensätze in R aus DWDS-Suchergebnissen mit Hilfe einer eigenen Funktion erstellen, die read.table() verwendet und sogar die DWDS-Suche „unter der Haube“ durchführt, sodass man die DWDS-Website gar nicht braucht. Details zu dieser Funktion gibt es weiter unten, aber um besser zu verstehen, was sie leistet, ist es sinnvoll vorher zu erfahren, was man ohne sie, also nur mit DWDS und read.table(), dafür alles machen müsste.

Suchergebnisse aus DWDS als Datensätze exportieren

Wir haben gesehen, dass DWDS tabellarisch formatierte Textdateien für die Ergebnisse (Häufigkeiten) von Count-Anfragen sowie für Teilkorpusgrößen nach Dekade und nach Textklasse zur Verfügung stellt. Aber auch die Suchergebnisse normaler Anfragen stellt DWDS als formatierte Textdateien zur Verfügung, die damit mit read.table() in R geladen werden können (Details dazu gleich im nächsten Abschnitt weiter unten).

In DWDS kann man nach Durchführung einer normalen (also nicht Count-) Anfrage durch Klicken des Buttons „Treffer exportieren“ auf der Ergebnisseite (siehe dieses Bild) einen Auswahldialog aufrufen, mit dem man das Format und die Anzahl der Treffer (bis maximal 5000) und die Ausgabe entweder als Download oder im Browser auswählen kann. (N.B.: Um Suchergebnisse aus dem Korpus Archiv der Gegenwart zu exportieren, muss man sich in DWDS Anmelden; bei den anderen ohne Anmeldung verfügbaren Korpora ist der Export auch ohne Anmeldung möglich.) Folgendes Bild zeigt diesen Auswahldialog mit den für dieses Seminar geeigneten Einstellungen:

Hier ist ein Ausschnitt aus der DWDS-Ausgabe im Browser mit den oben gezeigten Einstellungen für die Anfrage ‚@Hund‘ im DWDS-Kernkorpus:

Suchergebnisse aus DWDS als Datensätze in R einlesen

Zwar ist read.table() die wichtigste eingebaute R-Funktion zum Einlesen von Datensätzen, aber für dieses Seminar ist es praktischer, eine spezielle Funktion zu definieren, die read.table() aufruft aber auch viele DWDS-spezifische Anpassungen enthält. Diese Funktion, dwds.data.frame(), wird im nächsten Abschnitt ausführlich beschrieben. Um ein vertieftes Verständnis dieser Funktion zu gewinnen, erläutern wir einige Argumente von read.table(), die in dwds.data.frame() intern verwendet werden. Aber für dieses Seminar ist es nicht erforderlich, solche Details zu wissen.

Mit der Funktion read.table()

Die Funktion read.table() liest einen Datensatz zeilenweise in R ein. Sie nimmt ein obligatorisches Argument und viele optionale Argumente. Das obligatorische Argument heißt file und spezifiziert die Quelle des Datensatzes. Der Wert von file kann folgendermaßen angegeben werden:

Mit den optionalen Argumenten kann man das Einlesen sowie die Ausgabe des Datensatzes in R in vielfältiger Weise steuern. Für unsere Zwecke können bei den meisten dieser Argumente die voreingestellten Werte übernommen werden. Aber für folgende Argumente erfordern die DWDS-Daten Abweichungen von den Standard-Werten:

Beispiel: 100 Treffer der Anfrage ‚@Hund‘ aus dem DWDS-Kernkorpus (mit den Sucheinstellungen: von 1900 bis 1999, in allen Textklassen und aufsteigend nach Datum sortiert) exportieren und in R als Datensatz einlesen:

  1. Zuerst die Anfrage in DWDS durchführen.
  2. Dann den Button „Treffer exportieren“ anklicken und den Auswahldialog wie oben beschrieben bearbeiten, um die Suchergebnisse in tabellarischer Form im Browser zu zeigen.
  3. Dann folgende Eingabe, welche die URL der im vorangehenden Schritt aufgerufenen Webseite so wie die oben erläuterten Argumente von read.table() enthält, in R durchführen:
    > hund.kk.df1 <- read.table(file="https://www.dwds.de/r?format=full&limit=100&view=tsv&output=inline&q=%40Hund&corpus=kern&date-start=1900&date-end=1999&genre=Belletristik&genre=Wissenschaft&genre=Gebrauchsliteratur&genre=Zeitung&sort=date_asc", header=TRUE, comment="", sep="\t", quote="", colClasses="character", encoding="UTF-8")

Anmerkungen:

Um die ersten und letzten Zeilen des Datensatzes zu zeigen, kann man die Funktionen head() bzw. tail() verwenden. Die Darstellung hat allerdings einige Probleme, wie die folgende Ausgabe der ersten drei Zeilen sowie der Kopfzeile von hund.kk.df1 zeigt:

Solche Probleme sind neben den oben erwähnten DWDS-spezifischen Anpassungen weitere Gründe, eine eigene Funktion zum Einlesen von DWDS-Suchergebnissen in R zu definieren, die im Folgenden detailliert beschrieben wird.

Mit der Funktion dwds.data.frame()

Weil die oben aufgelisteten optionalen Argumente von read.table() immer jeweils denselben Wert beim Einlesen von exportierten DWDS-Datensätzen haben sollen, kann man eine R-Funktion definieren, die read.table() mit diesen Argumentzuweisungen aufruft, was die Eingabe in R vereinfacht. Darüber hinaus ermöglicht DWDS eine weitere Vereinfachung, denn mit der URL, über die die tabellarische Ausgabe von DWDS-Suchergebnissen im Browser gezeigt wird, wird auch die entsprechende Anfrage vorher ausgeführt.

Eine solche Funktion haben wir definiert, sie heißt dwds.data.frame() und wird mit dem bekannten source()-Aufruf in R geladen. Diese Funktion nimmt folgende Argumente, die alle optional sind (weil sie alle einen voreingestellten Wert haben): Korpus, Anfrage, Start, Ende, Textklasse, Sortierung, Zeilen, Abbrev. Die meisten dieser Argumente betreffen die Suche in DWDS und entsprechen den verschiedenen Einstellungen in der DWDS-Suchmaske (jedoch gibt es kein Argument für die Anzeige als KWIC, voll oder maximal, weil wir immer nur den vollen Satz des Treffers exportieren). Das Argument Abbrev betrifft die Ausgabe in R, und das erste Argument Korpus sowie das Argument Zeilen betreffen sowohl die Suche als auch die Ausgabe, spielen also eine doppelte Rolle. Hier ist eine Beschreibung der Argumente und ihrer möglichen Werte im Einzelnen:

Es gibt drei weitere Besonderheiten von dwds.data.frame(), einen die Suche und zwei die Ausgabe betreffend:

Diese drei Begebenheiten finden automatisch beim Aufruf von dwds.data.frame() statt, d.h. ohne die Übergabe eines Arguments, also müssen Sie sich bei der Verwendung von dwds.data.frame() nicht damit aufhalten.

Beispiele der Verwendung von dwds.data.frame()

Anmerkungen:

Im nächsten Beispiel wird dergleiche Datensatz wie im obigen Beispiel mit read.table() jetzt anhand von dwds.data.frame() mit dem ersten Aufruf erstellt und mit den anschließenden Aufrufen in verschiedener Weise ausgegeben:

Anmerkungen:

Zum Schluss noch ein Beipiel für die Erstellung eines Datensatzes mit nicht voreingestellten Werten für alle Argumente und drei verschiedene Ausgaben davon (N.B.: bei der letzten Ausgabe ist Zeilenlänge aufgrund des Arguments Abbrev = 40 zu groß für die Standardbreite der R-Konsole (80 Zeichen), daher wird die Ausgabe der Treffer-Spalte umgebrochen):

Übungsaufgaben zu Häufigkeitsverteilungen Sitemap Umgang mit Datensätzen