GNU R: Daten laden und speichern

Daten laden

Bearbeiten

Daten können mit load("Dateiname") geladen werden.

Wenn die Datei im Internet liegt, muss sie mit Hilfe der url()-Funktion geladen werden

 load(url("http://Pfad/zu/Datei.RData"))  # Beispiel-URL

Daten speichern

Bearbeiten

Mit der Funktion ls() listet R alle vorliegenden Variablen auf.

Arbeitsspeicher speichern

Bearbeiten

Mit save.image("dateiname.RData") wird das vorliegende Datenframe (alle Variablen) als sichtbare Datei im working directory (getwd()) gespeichert (Wenn man nur save.image() ausführt, wird das Datenframe als ".RData" gespeichert und ist dann im Dateibrowser unsichtbar).

Wenn man dann R wieder startet, wird diese Datei automatisch geladen. Unter Linux scheint es notwendig zu sein, den Arbeitsspeicher per Hand zu laden: Zunächst muss man in das Verzeichnis wechseln, in dem die Datei liegt. Diese wird dann mittels load("Dateiname.RData") geladen.

einzelne Objekte speichern

Bearbeiten

Wenn nur einzelne Objekte gespeichert werden sollen, wird die save-Funktion angewandt. Mit dem list-Parameter werden die gewünschten Objekte angegeben, welche in die Datei file gespeichert werden sollen.

 save(file="/Users/produnis/working/R/Einzelobjekt.RData", list="Objekt") # Beispiel

Arbeitsverzeichnis

Bearbeiten

Das aktuelle Arbeitsverzeichnis kann per getwd() angezeigt werden. Mit dem Befehl dir() werden die Dateien des aktuellen Arbeitsverzeichnisses angezeigt.


Mit dem Befehl setwd() kann das aktuelle Arbeitsverzeichnis gewechselt werden (set Working Directory = setwd).

 setwd("/Users/myaccount/R/") # Neues Arbeitsverzeichnis setzen

Auf Dauer kann es einfacher sein, ein eigenes Arbeitsverzeichnis beim Startvorgang einzustellen. Für diese Fälle gibt es die Datei Rprofil.site. Dieser muss nur eine letzte Zeile (gefolgt von einem Zeilenumbruch) mit dem Befehl "setwd" hinzugefügt werden.

CSV Dateien

Bearbeiten

Oft liegen die Daten, die Sie analysieren wollen, in einem CSV-Format vor. Möchte man diese Daten z.B. statistisch auswerten, muss man diese von der eigenen Festplatte in den Arbeitsbereich einladen. Gegeben seien Klausurergebnis mit 3 Aufgaben und 5 Personen

 name , aufgabe1 , aufgabe2 , aufgabe2
 Anna ,    10 , 15 , 13 
 Bert ,   3.5 , 13 ,  0
 Camilla , 12 ,  8 , 15
 Dieter ,   5 ,  6 ,  7 
 Emilia ,  15 , 15 , 14.5

Laden in einen Dataframe

Bearbeiten

Dabei wird z.B. die obige CSV-Datei[1] in einen Dataframe studentdata geladen.

 studentdata <- read.csv("data.csv", header=TRUE, stringsAsFactors=FALSE)

Spaltensummen berechnen

Bearbeiten

Wenn die obige CSV-Datei die Ergebnisse einer Klausur darstellen, so kann man die Daten nun auswerten. Exemplarisch werden in diesem Fall lediglich

  • Spaltensummen zur Berechnung der Gesamtpunktzahl berechnet und
  • eine Spalte mit der Summe der Aufgaben ergänzt.

Danach steht der Dataframe in seiner verarbeiteten Form zur Speicherung in einer neuen Datei bereit.

  a1 <- studentdata$aufgabe1
  a2 <- studentdata$aufgabe2
  a3 <- studentdata$aufgabe3
  studentdata$summe <- a1+a2+a3

Datenstruktur nach Berechnung der Punktesumme

Bearbeiten

Die CSV-Datei wird nach der Speicherung später die folgenden Spaltenstruktur besitzen

  name , aufgabe1 , aufgabe2 , aufgabe2 , summe
  Anna , 10 , 15, 13 , 38
  Bert , 3.5 , 13, 0 , 16.5
  Camilla , 12 , 8 , 15 , 35
  Dieter , 5 , 6 , 7 , 18 
  Emilia 15 , 15 , 14.5 , 44.5

Speichern der CSV-Datei nach der Auswertung

Bearbeiten

Der folgende Befehl schreibt dann den Inhalte eines Dataframes in eine CSV-Datei (z.B. nach R die Punktesummen in den Teilaufgaben ausgerechnet hat).

Mit folgendem Befehl wird dann die Dataframe in der neu angelegten Datei datasumme.csv[2]. Existiert die Datei bereits, wird diese überschrieben. Daher ist es ratsam für Rohdaten nicht zu überschreiben, sondern die verarbeiteten Daten in eine neue Datei zu schreiben. Dies gilt insbesondere, wenn man Fehler in der Verarbeitung hat und dann der Dataframe ggf. leer ist.

 write.csv(studentdata, "datasumme.csv", row.names = FALSE)

Laden von CSV-Dateien

Bearbeiten

Mit folgendem Befehl kann man die CSV-Datei in einen Dataframe einladen. In dem obigen Aufbau der CSV-Datei gibt es eine Headerzeile mit den Spaltenbezeichnungen.

 name , aufgabe1 , aufgabe2 , aufgabe2

Um R die Information zu geben, dass die erste Zeile als Spaltenbezeichnungen zu lesen sind, gibt man header=TRUE in Ladebefehl an. Dies ist in der Regel ein sinnvolles Vorgehen, weil man Zahlenwerten nicht ansieht, welche Bedeutung diese haben (z.B. Anzahl von Tieren Temperatur, Länge, Breite, Alter, ...). Fehlen diese Informationen und beginnt CSV-Datei direkt mit dem ersten Datensatz, verwendet man header=FALSE . Die obige Datei hätte dann das folgende Aussehen.

 Anna , 10 , 15, 13 
 Bert , 3.5 , 13, 0
 Camilla , 12 , 8 , 15
 Dieter , 5 , 6 , 7 
 Emilia 15 , 15, 14.5

Linux und Mac

Bearbeiten

Unter Linux und Mac wird der Pfadnamen standardmäßig mit einem Slash "/" getrennt

 studentdata <- read.csv("/home/teacher/documents/data.csv", header=TRUE, stringsAsFactors=FALSE)

Unter Windows ist der Backslash "\" zur Trennung der Pfadnamen verwendet. Im Pfadname ist dabei der doppelte Backslash als Trennung zu verwenden.

 studentdata <- read.csv("C:\\Users\\Teacher\\Documents\\data.csv", header=TRUE, stringsAsFactors=FALSE)

Speichern von CSV-Dateien

Bearbeiten

In diesem Beispiel geht man davon, dass die Daten in R in einem Dataframe vorliegen. Der Dataframe wurde dabei durch einen Auswertungsalgorithmus neu erzeugt, bzw. ein Dataframe mit Rohdaten wurde durch den Algoríthmus modifiziert. Im obigen Beispiel hat der der Algorithmus die Summe aller Teilaufgaben ausgerechnet und das Ergebnis in einer Spalte summe ergänzt.

 name , aufgabe1 , aufgabe2 , aufgabe2 , summe
 Anna , 10 , 15, 13 , 38
 Bert , 3.5 , 13, 0 , 16.5
 Camilla , 12 , 8 , 15 , 35
 Dieter , 5 , 6 , 7 , 18 
 Emilia 15 , 15 , 14.5 , 44.5


StringsAsFactors

Bearbeiten

Wenn man diese CSV-Speicherungsmethode verwendet, sollte man im Normalfall spezifizieren, das Stringvariable (hier die Vornamen in der ersten Spalte) nicht als Faktoren interpretiert werden. Dies erfolgt mit dem Parameter stringsAsFactors=FALSE. Damit konvertiert R die Textvariable in der ersten Spalte nicht in einen Faktor.


Linux und Mac

Bearbeiten

Unter Linux und Mac wird auch beim Speichern der Pfadnamen standardmäßig mit einem Slash "/" getrennt. Wenn die Rohdate

  write.csv(studentdata, "/home/teacher/documents/datasumme.csv", row.names = FALSE)

Unter Windows ist der Backslash "\" zur Trennung der Pfadnamen verwendet. Im Pfadname ist dabei der doppelte Backslash als Trennung zu verwenden.

  write.csv(studentdata, "C:\\Users\\Teacher\\Dokumente\\datasumme.csv", row.names = FALSE)


Inhaltsverzeichnis

Bearbeiten


Quellennachweise

Bearbeiten
  1. Bert Niehaus (2023) data.csv aus GitHub-Repository KnitR for Education https://github.com/niebert/knitr4education für eine Wikiversity-Lernressource - Datei: data.csv
  2. Bert Niehaus (2023) datasumme.csv aus GitHub-Repository KnitR for Education https://github.com/niebert/knitr4education für eine Wikiversity-Lernressource - Datei: datasumme.csv