Datenanalyse und Visualisierung mit R Datenanalyse und Visualisierung mit R Übung zu praktischen Arbeitsmethoden Modul MT 3 Di, 14:00-15:30, 3065/D3 Datenanalyse und Visualisierung mit R Was ist R?: R „A Language for Data Analysis and Graphics“ Open Source Software für (statistische) Datenanalyse und Graphik Quellcode – CRAN (Comprehensive R Archive Network) http://CRAN.R-project.org Historie von R: 1976: Entwicklung von S in den Bell Laboratories bei AT&T (Programmiersprache für Statistik, stochastische Simulation und Grafik) 1984: 2. Version von S; 1. Begleitbuch 1992: Einführung objektorientierter Ansätze Historie von R: 1998: Version 4 von S seit 1988: kommerzielle Implementation von S (S-PLUS) Historie von R: seit 1992: R als freie Implementation von S, Ross Ihaha & Robert Gentleman 1993: erste Binärversion auf Statlib veröffentlicht 1995: R unter GPL 1997: R-Development Core Team 1998: Comprehensive R Archive Network (17 Pers.) 2000: R (Version 1.0.0) erscheint (vollständig kompatibel zu S) Historie von R: 2002: Gründung der R-Foundation 2004: R-2.0.0 2009: R-2.8.1 2010: R-2.12.0 Warum R?: Vorteile von R - Open Source (GPL), d. h. keine Black Box - plattformunabhängig (Unix/Linux, Windows, Mac) - Aktualität - Support (Core Team und Usergemeinschaft) - schnelle Fehlerbeseitigung - Kommunikation mit Programmiersprachen (Fortran, C) - Batchbetrieb, Automatisierung Warum R?: Nachteile von R - keine (überzeugende) GUI - Kommandozeile und Skripts “gewöhnungsbedürftig” - keine dynamische oder interaktive Graphik in R (aber Erweiterungspakete bzw. Schnittstellen) - Geschwindigkeit (R ist Interpretersprache) Hilfe zu R: Hilfe zu R - innerhalb von R z.B. help(), help.start(), help.search(), ?help(), apropos(), ... - online z.B. http://cran.r-project.org/ http://CRAN.R-project.org/other-docs.html - Handbücher (online) mit help.start() oder auf CRAN - Bücher (offline) z.B. „Modern Applied Statistics with S (Venables & Ripley, 2002) - Mailinglisten Basics zu R: R-Workspace - enthält alle Objekte der aktuellen R-Sitzung - im aktuellen Arbeitsverzeichnis (Working Directory) (Verzeichnis aus dem R gestartet wurde) getwd() Anzeigen des aktuellen Arbeitsverzeichnis setwd(“Pfadangabe”) Festlegen des aktuellen Arbeitsverzeichnis ls() Anzeigen aller Objekte im Workspace rm(“Objektname”) Löschen eines Objekts aus dem Workspace save.image() Speichern des aktuellen Workspace load(“Dateiname”) Laden eines gespeicherten Workspace Optionales Speichern des Workspace beim Beenden (q()) von R Basics zu R: R-Workspace - gespeicherter Workspace in .Rdata - “History” der letzten R-Sitzung in .Rhistory (savehistory(), loadhistory()) Basics zu R: R-Objekte - Alles in R ist ein Objekt! (Vektoren, Matrizen, Arrays, Funktionen, ...) - Objekte werden Klassen zugeordnet, die bestimmte Eigenschaften festlegen - Spezielle Methoden bestimmter Funktionen für verschiedene Klassen Objektnamen: - Beginnen mit Buchstaben - Buchstaben, Zahlen, Sonderzeichen - keine Leerzeichen - keine unerlaubten Sonderzeichen - casesensitive - Punkt am Anfang bedeutet verstecktes Objekt Basics zu R: R-Objekte class(objektname) Klasse eines Objekts length(objektname) Länge eines Objekts attributes(objektname) Attribute eines Objekts structure(objektname) Struktur eines Objekts mode(objektname) Datentyp eines Objekts Basics zu R: Datentypen und Datenstrukturen in R Datentypen: Beschreibung Beispiel Datentyp leere Menge NULL NULL logische Werte FALSE logical ganze und reelle Zahlen 3.14 numeric komplexe Zahlen 2.13+1i complex Zeichenfolgen “Text” character Basics zu R: Datentypen und Datenstrukturen in R Datentypen: Beschreibung Beispiel Datentyp leere Menge NULL NULL logische Werte FALSE logical ganze und reelle Zahlen 3.14 numeric komplexe Zahlen 2.13+1i complex Zeichenfolgen “Text” character (Interner) Speichermodus: 2 Varianten für numeric: integer oder double Basics zu R: Datentypen und Datenstrukturen in R Datenstrukturen: Beschreibung Beispiel Datenstruktur Vektor vector Matrix matrix (2-dim) Feld array (1 bis n-dim) Liste list (enthalten Elemente unterschiedlicher Datenstruktur) Datensatz data.frame (Spezialfall der Liste; Elemente müssen Vektoren gleicher Länge sein) Basics zu R: Datentypen und Datenstrukturen in R Datenstrukturen: Beschreibung Vektor Beispiel 1 3 2 7 Datenstruktur 4 Matrix vector matrix (2-dim) Feld array (1 bis n-dim) Liste list (enthalten Elemente unterschiedlicher Datenstruktur) Datensatz data.frame (Spezialfall der Liste; Elemente müssen Vektoren gleicher Länge sein) Basics zu R: Datentypen und Datenstrukturen in R Datenstrukturen: Beschreibung Vektor Matrix (2-dim) Feld Beispiel Datenstruktur 1 3 2 7 4 45 5 3 12 6 11 4 2 3 65 41 6 32 7 14 vector matrix array (1 bis n-dim) Liste list (enthalten Elemente unterschiedlicher Datenstruktur) Datensatz data.frame (Spezialfall der Liste; Elemente müssen Vektoren gleicher Länge sein) Basics zu R: Datentypen und Datenstrukturen in R Datenstrukturen: Beschreibung Beispiel Datenstruktur 21 23 23 47 24 Vektor Matrix 1 (2-dim) 45 Feld 11 48 5 3 12 46 3 2 7 4 14 4 2 3 35 5 3 12 6 51 62 2 27 54 4 2 3 65 (1 bis n-dim) 41 6 32 7 vector matrix array 14 Liste list (enthalten Elemente unterschiedlicher Datenstruktur) Datensatz data.frame (Spezialfall der Liste; Elemente müssen Vektoren gleicher Länge sein) Basics zu R: Datentypen und Datenstrukturen in R Datenstrukturen: Beschreibung Beispiel 1 3 2 Matrix 45 5 3 (2-dim) 11 4 2 Feld 41 6 32 Vektor 7 Datenstruktur 4 vector matrix array (1 bis n-dim) Liste ad ce fh ed list (enthalten Elemente unterschiedlicher Datenstruktur) Datensatz data.frame (Spezialfall der Liste; Elemente müssen Vektoren gleicher Länge sein) Basics zu R: Datentypen und Datenstrukturen in R Datenstrukturen: Beschreibung Beispiel Datenstruktur Vektor 1 a TRUE 7.4 vector Matrix 45 d TRUE 12.3 matrix (2-dim) 11 we FALSE 3.2 Feld 41 rt TRUE 7.0 array (1 bis n-dim) Liste list (enthalten Elemente unterschiedlicher Datenstruktur) Datensatz data.frame (Spezialfall der Liste; Elemente müssen Vektoren gleicher Länge sein) Basics zu R: Datentypen und Datenstrukturen in R Datenstrukturen: Beschreibung Skalar Beispiel In R repräsentiert durch einen Vektor der Länge 1 Vektor Matrix Datenstruktur vector 31 matrix (2-dim) Feld array (1 bis n-dim) Liste list (enthalten Elemente unterschiedlicher Datenstruktur) Datensatz (Liste; Elemente müssen Vektoren gleicher Länge sein) data.frame Basics zu R: Datentypen und Datenstrukturen in R typeof(objektname) Speichermodus eines Objekts is.numeric(objektname) Hat ein Objekt einen bestimmten Datentyp? is.character(objektname) “ is.matrix(objektname) “ allgemein: is.Datentyp(objektname) oder is.Datenstruktur(objektname) Erzwingen eines Datentyps / einer Datenstruktur: as.Datentyp(objektname) oder as.Datenstruktur(objektname) Basics zu R: Datenimport und -export in R Import von ASCII-Daten: read.table(dateiname) Einlesen eines Datensatzes in Tabellenform read.fwf(dateiname) Feste Spaltenbreite read.csv(dateiname) Kommaseparierte Spalten Basics zu R: Datenimport und -export in R Export von ASCII-Daten: write.table(dateiname) Schreiben eines Datensatzes in Tabellenform Basics zu R: Datenimport und -export in R Speichern und Laden von R Objekten: save(objektname, file=dateiname) Speichern eines R Objekts in externe Datei load(dateiname) Laden eines R Objekts aus externer Datei Basics zu R: Fehlende Werte (missing values) in R Berücksichtigung von missing values: read.table(dateiname, na.strings=”NA-Indikator”) beim Einlesen aus externer Datei functionname(..., na.rm=TRUE) beim Funktionsaufruf Basics zu R: Indizierung verschiedener Datenstrukturen Indizierung von Vektoren: a <- 1 3 2 7 a <- c(1, 3, 2, 7, 4) a[ ] a[1] a[1 : 3] a[c(4, 1, 3)] 4 Basics zu R: Indizierung verschiedener Datenstrukturen Indizierung von Matrizen: b <- 45 5 3 11 4 2 41 6 32 b <- c(45, 5, 3, 11, 4, 2, 41, 6, 32) c <- matrix(b, nrow = 3, ncol = 3, byrow=TRUE) c[ , ] c[1, ] c[, 3] c[2, 2] c[3 : 2, c(1, 3)] Basics zu R: Indizierung verschiedener Datenstrukturen 14 4 3 51 62 Indizierung von Arrays: d <- 11 4 41 6 d <- c(11, 41, 4, 6, 14, 51, 4, 62) e <- array(d, dim = c(2, 2, 2)) e[ , , ] e[1, , ] e[2, 2, 2] Basics zu R: Indizierung verschiedener Datenstrukturen Indizierung von Listen: f <- 1 3 1 3 2 4 2 7 4 ad ce fh ed f <- list(c(1,3,2,7,4), matrix(1:4, 2), c(”ad”, “ce”, “fh”, “ed”)) f[[1]] f[[2]] [1,] f <- list(f1 = c(1,2,4,5), f2 = matrix(1:4, 2)) f$f1 Basics zu R: Indizierung verschiedener Datenstrukturen Indizierung von Data Frames: wie bei Matrizen oder wie bei Listen!