GNU R: Daten laden und speichern

Aus Wikibooks

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.

setwd("/Users/produnis/R/") # Beispiel

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

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

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

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

 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

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/dokuments/data.csv", header=TRUE, stringsAsFactors=FALSE)

Windows[Bearbeiten]

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\\Dokumente\\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/dokuments/datasumme.csv", row.names = FALSE)

Windows[Bearbeiten]

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