Programmierung mit Teil I

Größe: px
Ab Seite anzeigen:

Download "Programmierung mit Teil I"

Transkript

1 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 2 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 3 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 4 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 5 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 6 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 7 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 8 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 9 Programmierung mit Teil I Uwe Ligges Fakultät Statistik Statistiksoftware 1 Einführung 1.2 Statistiksoftware Einschub: Statistiksoftware SPSS SPSS Name: zunächst Statistical Package for the Social Sciences dann Superior Performing Software System heute SPSS gegründet 1968 als eigenständige Firma 2009 an IBM verkauft Lehrveranstaltungen: 1-2 tägige Kurse des SBAZ Einsatz vor allem in den Sozial- und Geisteswissenschaften, im CRM, beim Scoring TU Dortmund, WS 2014/15 Organisation Selbst programmieren Warum? Statistiksoftware: R Datum / Zeit Raum EF 50/HS Vorlesung 08:15 09:45 Uhr 2 Übungen wird bekanntgegeben CDI / 121 (Beginn ab Mo., ) Webseite der Vorlesung: Einteilung der Übungsgruppen nach Anmeldung unter o.g. URL Anmeldefrist: Montag, Für alle, die etwas Lernen und einen Leistungsnachweis möchten: Automatisierung sich wiederholender Abläufe Anpassung vorhandener Verfahren an neue Problemstellungen Implementierung neuer Verfahren Simulationen... R Entwicklung seit 1992 Inspiriert von S / S-PLUS Lehrveranstaltung: Programmierung mit R Einsatz an Universitäten und Forschungsinstituten sowie immer mehr in der Industrie Lizenz: GPL 2 (freie Software, Open Source Software) mehr Details folgen Aktive Teilnahme an den Übungen! (Pflicht!) Selbständiges Bearbeiten der Übungszettel! Fragen stellen und mitdiskutieren! Inhalt Statistiksoftware: SAS Statistiksoftware: Weiteres 1 Einführung 1.1 Inhalt Einführung (Hintergrund, Geschichte und Ausblick, Literatur) Datenstrukturen, Konstrukte, Zuweisungen und elementare Funktionen Import und Export (Daten, Programmcode,...) Grafik Überblick über grundlegende und spezielle statistische Verfahren Funktionen, Scoping Rules, der Workspace, Debugging (Teile davon evtl. auch erst im Sommer) R Pakete Literatur SAS Name: zunächst: Statistical Analysis Systems heute: sas SAS Institute, gegründet 1976, 2 Mrd. US$ Jahresumsatz. Lehrveranstaltungen: SAS Kurs, Datenanalyse mit SAS Einsatz vor allem in Medizin, Pharmaindustrie, im CRM, beim Scoring CRM: Customer Relationship Management Weitere Statistiksoftware: Gauss (USA, seit 1984) Minitab (USA, seit 1972) Stata (USA) Statistica (StatSoft, Deutschland)... Statistiksoftware für spezielle Einsatzgebiete: Lisrel (für Strukturgleichungsmodelle) StatXact (Spezialsoftware für exakte Tests)...

2 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 10 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 11 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 12 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 13 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 14 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 15 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 16 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 17 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 18 Anforderungen an Statistiksoftware Die Geschichte Vor- und Nachteile von R Anforderungen an Statistiksoftware: Interaktive Arbeit mit Daten für die Datenanalyse Erstellung statistischer Grafik Hohe numerische Genauigkeit Hohe Rechengeschwindigkeit Verarbeitung großer Datenmengen Automatisierbarkeit von Methoden und sich wiederholender Abläufe Einfache Bedienbarkeit / Programmierbarkeit Nebenbedingungen: Preis, unterstützte Hardware, Parallelisierung,... Diese Anforderungen widersprechen sich teilweise. Je nach Gewichtung der Schwerpunkte erfolgt die Wahl einer entsprechenden Software. Software kann niemals besser sein als ihr Benutzer! Die Association for Computing Machinery hat John Chambers 1999 mit dem Software System Award ausgezeichnet: S has forever altered the way people analyze, visualize, and manipulate data... Man beachte, dass die Ziele von S sind: Interaktives Rechnen mit Daten Den Benutzer einfach zum Programmierer werden zu lassen Erstellen von Grafiken für explorative Datenanalyse und Präsentationen Einfache Wiederverwendung bereits entwickelter Funktionen Zwei zu Programmpaketen realisierte Implementationen von S haben sich entwickelt: S PLUS und R. Nachteile von R Keine komfortable grafische Benutzeroberfläche (aber R Commander, JGR u.a.) Keine interaktive Grafik (aber iplots, rgl u.a.)... Die Geschichte Die Geschichte Was ist R denn jetzt? 1 Einführung 1.3 Geschichte R ist eine freie Software (unter der GNU GENERAL PUBLIC LICENSE), die zunächst von Robert Gentleman und Ross Ihaka wegen zu hoher Kosten für S PLUS für Lehrzwecke entwickelt wurde. A language and environment for data analysis and graphics Open Source Mittel zum Technologie- / Methodentransfer durch Packages Später vereinigte sich das R Development Core Team, das z.zt. aus 19 Ein Datenzugriffsmechanismus für Personen aus Forschung und Wirtschaft besteht, die rund um den Globus text Dateien und R Workspaces verteilt sind (darunter S Erfinder John Chambers). Die erste zur Sprache S in Version 3 vollständig kompatible Version (1.0.0) erschien am (Schaltjahr!). Die aktuelle Version ist R Datensätze von S PLUS, SPSS, Minitab, SAS Xport,... Relationale Datenbanken ODBC, PostgreSQL, MySQL,... Der Name R entstand, da er nahe an S liegt und Ross und Robert s Vornamen mit R beginnen oder man eine reduced version of S wollte. Die Geschichte Vor- und Nachteile von R Wo kann man R bekommen? Am Anfang war S, eine 1984 von Richard Becker und John Chambers (vgl. das braune Buch) in den Bell Laboratories bei AT&T (heute bei Lucent Technologies) für Statistik, stochastische Simulation und Grafik entwickelte Programmiersprache. The New S (Version 2) wurde 1988 von Becker, Chambers und Allan Wilks eingeführt (vgl. das blaue Buch), und enthält mehr oder weniger die heute bekannte S Funktionalität. Version 3 von S wird 1992 in dem weißen Buch von Chambers und Trevor Hastie beschrieben, die Möglichkeiten hinzufügten, statistische Modelle einfach zu spezifizieren (in einer Art Formelnotation). Die neueste Version 4 von S beschreibt Chambers im grünen Buch Ansätze der Implementierung dieser Version gibt es im R package methods. Vorteile von R Open Source Support Keine black box, alles kann nachvollzogen werden Am Puls der Forschung Erweiterbarkeit, Skalierbarkeit (Interfaces zu anderen Programmiersprachen, Datenbanken etc.) Auf (fast) jedem Betriebssystem / jeder Plattform lauffähig Meist schnelle und kompetente Beantwortung von Fragen auf R Help (eine Mailing Liste). Fehler werden meist innerhalb weniger Tage behoben. Alles rund um R gibt es auf der R Homepage und auf dem CRAN (Comprehensive R Archive Network): z.b.: R sources und binaries für diverse Betriebssysteme über 5000 R Pakete zu diversen (statistischen) Verfahren andere relevante Software (geeignete Editoren, Erweiterungen,...) Bücher, Publikationen, Manuals, FAQs, Dokumentation The R Journal Zugriff auf Mailing Listen (R help, R devel) Bug Tracking System und Entwickler Seiten Links zu relevanten anderen Projekten (z.b. Bioconductor, Omegahat)

3 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 19 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 20 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 21 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 22 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 23 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 24 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 25 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 26 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 27 Los geht s R als Taschenrechner Funktionen Zuweisungen Wie kann man R starten? 1 Einführung 1.4 R als Taschenrechner Windows: Im Startmenü auf R klicken. andere Betriebssysteme: R in die Kommandozeile eintippen. Gerade ist uns eine Vielzahl verschiedener Funktionen begegnet. Jegliches Arbeiten geschieht mit Funktionen. Ein Funktionsaufruf hat die Form, dass der Funktionsname angegeben wird, dem in runden Klammern ein oder mehrere durch Kommata getrennte Argumente folgen: funktionsname(argument1 = Wert1, Argument2 = Wert2, usw.). Argumente mit Voreinstellungen müssen beim Funktionsaufruf nicht mit angegeben werden. Falls es Voreinstellungen für Argumente gibt, so sind diese in der Regel auf der Hilfeseite der entsprechenden Funktion angegeben. Später gibt es noch viel mehr zu Funktionen! x < x<-4 6->x x=3.25 neue.variable1 <- x # eine Zuweisung # schlecht lesbar # veraltet, schlecht lesbar, verwirrend # nagelneu, S 4 kompatibel, aber geht nicht überall neue.variable2<-neue.variable1+2#kaum lesbar! neue.variable2 <- neue.variable1 + 2 Fazit: # jetzt besser lesbar Man sollte sinnvoll Leerzeichen einfügen, um die Lesbarkeit zu erhöhen. Vorsicht bei <- und ->! Namen sollten mit einem Buchstaben beginnen, dürfen aber auch Zahlen enthalten. Los geht s R als Taschenrechner Hilfe! Logik * 2 (4 / pi)^3 # Dies ist ein Kommentar (nach dem Zeichen "#"). 0 / Inf 0 / 0 # Nicht definiert -> NaN Inf - Inf # Nicht definiert -> NaN sin(pi / 2) # Funktionsname: sin ; Argument: pi / 2 Es gilt Punkt- vor Strichrechnung! Es ist aber immer sinnvoll Klammern zu setzen, um die Lesbarkeit eines Programms zu verbessern und Irrtümern vorzubeugen. Starten des Hilfesystems help.start() im Browser Hilfe zu einer Funktion help("funktionsname")?funktionsname ähnliche Funktionen apropos("funktionsname") nach Schlagwort suchen help.search("schlagwort") help.start() # Der Browser öffnet sich. options(help_type="html") # Hilfesystem auf html umstellen?abs # Hilfe zur Funktion abs() apropos("help") # Gibt es ähnliches wie help()? help("help.search") # Hilfe zur Funktion help.search() help.search("histogram") # Was gibt es zum Thema "histogram"? 1 Einführung 1.5 Logik Zunächst einige Überlegungen zur Logik an der Tafel... Vergleiche ==,!=, >, <, >=, <= Konstanten TRUE, T, FALSE, F und NA (In R T, F vermeiden!) Operatoren! (Negation), xor() &, &&,, (ausschließendes oder) (und, oder) Grundlegendes Rechnen Mehr Hilfe! Logik Grundlegende Operatoren +, -, *, /, ^ Ganzzahlige Division,Modulo %/%, %% Extremwerte, Betrag max(), min(), abs() Wurzel sqrt() Runden (Ab-, Auf-) round(), floor(), ceiling() trigonometrische sin(), cos(), tan(), Funktionen asin(), acos(), atan() Logarithmen log(), log10(), log2(), exp() Summe, Produkt sum(), prod() Die Zahl π pi Unendlichkeit Inf, -Inf (infinity) nicht definiert NaN (Not a Number) fehlende Werte NA (Not Available) leere Menge NULL Sollte die Dokumentation in den Hilfeseiten nicht ausreichen, so sucht man üblicherweise in der folgenden Reihenfolge in weiteren Quellen: mitgelieferte FAQs mitgelieferte Manuals evtl. vorhandene Bücher Archive der Mailinglisten R help und evtl. R devel zuletzt eine Frage an die Mailingliste R help richten Sollte man einen Bug finden, so schreibt man an R help, wenn man nur glaubt, dass es ein Bug ist, an R devel, wenn man sich nicht ganz sicher ist, an R bugs, wenn man sich absolut sicher ist 4 < 3 #-> FALSE (3 + 1)!= 3 #-> TRUE (3 >= 2) & (4 == (3 + 1)) #-> TRUE TRUE + FALSE + TRUE # TRUE = 1, FALSE = 0 #-> 2-3<-2 # falsch - Zuweisung! #-> Error -3 < -2 #-> TRUE T <- 55 # In R nicht T / F verwenden!

4 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 28 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 29 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 30 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 31 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 32 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 33 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 34 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 35 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 36 Logik Logik fehlende Werte Der Workspace und wie man R beendet Die Operatoren && und arbeiten nicht vektorwertig (später...), Fehlende Werte werden durch NA dargestellt R hält alle Objekte in einem Workspace. sondern liefern immer einen einzelnen Wahrheitswert (manchmal sehr Die Funktion ls() zeigt alle Objekte im aktuellen Workspace an. sinnvoll, aber gefährlich). Testen auf NAs mit is.na(), aber nicht mit x == NA. Mit rm(objektname) kann ein Objekt aus dem Workspace Es wird nur soviel der Logik Verknüpfung ausgewertet, wie zu einer NAs entfernen mit na.omit(). gelöscht werden. korrekten Aussage benötigt wird (effizient). Der Wert NaN (Not a Number, nicht definiert) wird wie Das Beenden von R geschieht mit der Funktion quit(). NA behandelt (Aussage is.na(nan) ist wahr). Beim Beenden wird auch die Frage gestellt, ob man den aktuellen Die Operatoren & und hingegen arbeiten vektorwertig. Workspace speichern möchte. Bei Beantwortung der Frage mit JA: Die history der letzten Befehle wird in der Datei.Rhistory gespeichert. x <- c(2, NA, 4) Die aktuellen Objekte im Workspace werden in der Datei.Rdata x == NA # [1] NA NA NA gespeichert. is.na(x) # [1] FALSE TRUE FALSE Den Workspace mit save.image() speichern und mit load() wieder laden. Als Standard Speicherort für die Datei des Workspace wird das Verzeichnis gewählt, aus dem R aufgerufen wird, bzw. das unter Windows als Arbeitsverzeichnis in der Verknüpfung gesetzt ist. Logik Sprache und Editoren Komfortable Editoren für R FALSE && TRUE # die rechte Seite wird NICHT ausgewertet TRUE && TRUE # die rechte Seite wird ausgewertet TRUE FALSE # die rechte Seite wird NICHT ausgewertet TRUE (x <- 3) FALSE TRUE # die rechte Seite wird ausgewertet FALSE (x <- 3) c(true, TRUE) & c(false, TRUE) # vektorwertig c(true, TRUE) && c(false, TRUE) # NICHT vektorwertig 1 Einführung 1.6 Sprache und Editoren In der Kommandozeile von R kann man zwar sehr schön einfache Berechnungen durchführen, das Erstellen von Funktionen und Programmen fällt jedoch schwer. Es empfiehlt sich daher, einen Editor zu verwenden. Eine Funktion kann dann in einer Textdatei auf der Festplatte gespeichert werden und mit source("dateiname") geladen werden. Einfachere Funktionen oder Programmteile können auch mittels Copy&Paste übertragen werden. Unter gibt es u.a. die Erweiterung ESS (Emacs Speaks Statistics) für den unter allen Betriebssystemen laufenden, mächtigen und freien Editor Emacs bzw. XEmacs. Logik Alles Objekte und Vektoren! Komfortable Editoren für R any(): Ist irgendein Element eines Vektors TRUE? all(): Sind alle Elemente eines Vektors TRUE? a1 <- c(false, FALSE) a2 <- c(false, TRUE) a3 <- c(true, TRUE) any(a1) # FALSE any(a2) # TRUE all(a2) # FALSE all(a3) # TRUE all(!a1) # TRUE Alles ist ein Objekt (jegliche Art Daten und Funktionen)! R ist eine objektorientierte Sprache! (Das heben wir uns für das Ende des Kurses auf!) Es gibt nur Daten und Funktionen! R ist eine funktionale Sprache! D.h. egal was man durch gültige Eingabe bewirkt, wird durch Funktionen getan (auch die Ausgabe von Werten auf der Konsole!). Jegliches Arbeiten mit Daten geschieht über Funktionen. R ist eine vektorbasierte Sprache! Jedes Objekt in R wird intern durch einen Vektor repräsentiert, selbst Funktionen! Die sehr nützliche Funktion str() zeigt die Struktur eines Objekts an. Mit dieser Erweiterung können vom (X)Emacs aus Statistikpakete (z.b. S PLUS, SAS, R usw.) komfortabel gesteuert werden. An der ESS Entwicklung sind auch Mitglieder des R Development Core Teams beteiligt. Auf den Linux Rechnern der Fakultät ist XEmacs mit ESS installiert. R wird im (X)Emacs gestartet durch die Tastenkombination: ESC-x, Shift-R, Enter

5 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 37 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 38 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 39 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 40 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 41 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 42 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 43 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 44 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 45 Komfortable Editoren für R Vektoren Rechnen mit Vektoren Sonst sehr empfehlenswert (insbesondere auch für Windows): Mit der Funktion c() (combine) kann man Vektoren erzeugen, z.b.: Das Rechnen mit Vektoren geschieht komponentenweise, wie z.b. in: Der freie Editor Tinn-R: https://sourceforge.net/projects/tinn-r/ Die Entwicklungsumgebung RStudio: Der kommerziellen Editor WinEdt, der vor allem L ATEX Benutzern bekannt sein dürfte: Für den WinEdt gibt es das Paket RWinEdt, das auf den Windows Rechnern der Fakultät Statistik installiert ist. Diese Erweiterung bitte starten (dadurch wird WinEdt registriert), indem man im R Menü auswählt: Statistik UniDo Set and start WinEdt. Wie auch ESS bieten die hier genannten Werkzeuge neben Syntax Highlighting Kommunikationsmöglichkeiten mit R über Shortcuts und die Klickwelt. x <- c(4.1, 5.0, 6.35) x <- c(7.9, x, 2) y <- c("hallo", "Welt") y <- c("statistik", TRUE, x) # alles wird zu "character" Die Daten innerhalb eines Vektors müssen konsistent sein. U.a. sind folgende Typen möglich: logical Wahr (TRUE) oder Falsch (FALSE) numeric [integer] Ganzzahlen numeric [double] reelle Zahlen in doppelter Maschinengenauigkeit complex Komplexe Zahlen character Buchstaben und Zeichenfolgen (strings) 2:4 * 1:3 #-> x <- c(4.1, 5.0, 6.35) * 2 #-> x + 5:7 #-> :5-1:6 #-> t(2:4) %*% 1:3 #-> 20 Stimmen die Längen (length(x), auch bei anderen Objekten) von Vektoren nicht überein (Längen m < n), so wird der kürzere Vektor (oder Skalar) so oft wiederholt, wie nötig (c(1, 2, 3) * 2 = c(1, 2, 3) * c(2, 2, 2)) oder er wird durch Wiederholung der ersten n m + 1 Elemente verlängert, bis er passt (mit Warnung) Datenstrukturen Vektoren Indizierung von Vektoren Unter Datenstrukturen versteht man eine Beschreibung dessen, wie die Daten dargestellt werden und angeordnet sind. Je nach Problemstellung und Art der Daten gibt es verschiedene geeignete Darstellungsarten. In der Informatik benutzt man Datenstrukturen um Daten so anzuordnen, dass effizient damit zu rechnen, z.b. Bäume für Sortierverfahren. In der Statistik werden Datenstrukturen benutzt, die die Natur der Daten berücksichtigen, so dass sie angemessen repräsentiert werden und in Modellen spezifiziert werden können. Wir werden u.a. folgende Datenstrukturen kennenlernen: Vektoren, Matrizen, Arrays, Data Frames, Listen,.... Bei nicht konsistenter Eingabe wird das niedrigste Niveau gewählt, wie etwa im letzten Beispiel: > y [1] "Statistik" "TRUE" "7.9" "4.1" "5" "6.35" "2" Alle Typen sind als character darstellbar, aber es ist nicht eindeutig möglich, das Wort Statistik als Zahl oder gar als logischen Wert darzustellen. Analog wird im folgenden Beispiel die reelle Zahl als komplexe darstellbar sein, aber nicht umgekehrt: c(5, 2+1i) # 5+0i 2+1i Vektoren transponieren: t(x) Vektoren multiplizieren: x %*% y Es können einzelne Elemente eines Vektors mit Hilfe des zugehörigen Index angesprochen werden. Dazu wird dem Namen des Vektors der entsprechende Index in eckigen Klammern nachgestellt, z.b.: x[3]. Mehrere Indices können als Vektor angegeben werden. Voranstellen eines Minus Zeichens ermöglicht eine inverse Auswahl (z.b. zum Ausschließen eines oder mehrerer Elemente). Auch logische Indizierung ist möglich (TRUE für gute, FALSE für schlechte Elemente) Benannte Elemente können über ihren Namen angesprochen werden. Man kann auch einer Indizierung einzelne Elemente eines Vektors zuweisen, um Elemente eines Vektors zu ersetzen. Vektoren Folgen und Wiederholungen Indizierung von Vektoren 2 Datenstrukturen 2.1 Vektoren Folgen seq(anfang, Ende, by = Abstand) seq(along = Objekt) Anfang:Ende Wiederholungen rep(objekt, Anzahl) x <- c(3, 6, 9, 8, 4, 1, 2) length(x) # 7 x[3] # 9 rep(objekt, each = Anzahl) x[c(4, 2)] # 8 6 1:10 #-> x <- seq(4, 14, 2) #-> x[-3] # x[- c(2, 3, 7)] # rep(3, 12) #-> rep(x, 2) #-> rep(x, each = 2) #-> rep(3:5, 1:3) #-> rep(true, 3) #-> TRUE TRUE TRUE x < 4 # TRUE FALSE FALSE FALSE FALSE TRUE TRUE logik.vektor <- x < 4 x[logik.vektor] x[x < 4] # seq(along = x) #->

6 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 46 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 47 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 48 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 49 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 50 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 51 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 52 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 53 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 54 Indizierung von Vektoren Matrizen Funktionen für Matrizen x <- c(besser = 3, schlechter = 5, egal = 2) x["besser"] #-> 3 x <- 1:10 #-> x[5] <- 8 #-> x[9:10] <- 10:9 #-> x[] <- 2 #-> x <- 2 #-> 2 Matrizen werden mit der Funktion matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE) erzeugt, wobei die Argumente folgende Bedeutung haben: data Ein Vektor mit den Daten, sortiert nach Spalten oder Zeilen. nrow Zeilenanzahl ncol Spaltenanzahl (unnötig, wenn data und nrow angegeben ist) byrow Falls TRUE, wird die Matrix zeilenweise aufgebaut, sonst spaltenweise X <- matrix(c(4, 7, 3, 8, 9, 2), nrow = 3) # spaltenweise Y <- matrix(c(4, 7, 3, 8, 9, 2), nrow = 3, byrow = TRUE) Z <- matrix(c(4, 7, 3, 8, 9, 2), ncol = 3) t(z) == Y # transponieren - OK! Für Experten: Wir erinnern uns: Eigentlich ist alles ein Vektor. Daher ist die resultierende Matrix eigentlich nur der Vektor data mit entsprechenden Dimensionsattributen. X <- matrix(c(4, 7, 9, 2), nrow = 2) str(x) #-> num [1:2, 1:2] t(x) # Transponiert die Matrix solve(x) # Invertiert die Matrix diag(x) # Diagonale extrahieren Zusammenstellung nützlicher Funktionen Indizierung von Matrizen Arrays sort() Sortieren rev() Umkehren eines Vektors: rev(sort()) für abst. Sort. rank() Vektor der Ränge (ohne/mit Entfernen von Bindungen) order() Vektor mit Indexzahlen, der zum Sortieren verwendet wird. identical() Überprüfung von exakter Gleichheit zweier Objekte all.equal() Überprüfung auf numerische Gleichh. bzgl. Maschinen- Rechengenauigkeit unique() Entfernt mehrfach vorkommende Werte aus einem Vektor duplicated() Liefert TRUE bei mehrfach vorhandenen Werten which() Welche Elemente erfüllen eine gegebene Bedingung? cumsum() Erzeugt für jedes i die Summe von x1 bis xi choose() Effiziente Berechnung des Binomialkoeffizienten gamma(), lgamma() Gammafunktion bzw. deren ln Die Indizierung von Matrizen geschieht analog zur Indizierung von Vektoren, also auch per Index(-vektor), negativem Index, Namen oder logischen Werten. Um den Wert mit Index (i, j) (Zeile i, Spalte j) einer Matrix X anzusprechen, verwendet man die Form: X[i, j] Das Weglassen einer Spaltenangabe, also etwa X[i, ], ermöglicht das Ansprechen des i-ten Zeilenvektors, bzw. X[, j] für den j-ten Spaltenvektor. X <- matrix(c(4, 7, 3, 8, 9, 2), nrow = 3) X[1, 2] #-> 8 X[3, 1] #-> 3 X[3, ] #-> 3 2 X[, 2] #-> Bisher wurden die Datenstrukturen vom Skalar über den Vektor bis zur Matrix erweitert. Eine weitere Verallgemeinerung ist das Array. Arrays können beliebig viele Dimensionen besitzen und werden mit dem Befehl array(data, dim = length(x)) erzeugt, wobei als Argument mit dim ein Vektor mit der Anzahl der Elemente jeder Dimension angegeben werden kann. Die Indizierung erfolgt analog zur Indizierung von Vektoren und Matrizen. X <- array(1:60, dim = c(3, 5, 4)) X[2, 2, 2] #-> 20 X <- array(1:60, dim = c(3, 5, 2, 2)) X[2, 3, 1, 2] #-> 38 Matrizen und Arrays Funktionen für Matrizen Listen 2 Datenstrukturen 2.2 Matrizen und Arrays Wichtige und nützliche Funktionen zum Rechnen mit Matrizen: %*% Matrixmultiplikation chol() Choleski Zerlegung einer Matrix 2 Datenstrukturen 2.3 Listen diag() Abfragen und Setzen der Hauptdiagonalen dimnames() Spalten- und Zeilennamen eigen() Eigenwerte und -vektoren kappa() Konditionszahl einer Matrix ncol(), nrow() Anzahl Spalten bzw. Zeilen einer Matrix qr() QR Zerlegung solve() Invertierung einer Matrix svd() Singulärwertzerlegung t() Transponieren einer Matrix

7 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 55 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 56 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 57 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 58 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 59 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 60 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 61 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 62 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 63 Listen Dataframes split() und merge() Eine sehr flexible Datenstruktur sind Listen. Jedes Element einer Liste kann einen unterschiedlichen Datentyp besitzen, so kann eine Liste z.b. verschieden lange Vektoren / Matrizen unterschiedlichen Typs enthalten, selbst wieder Element einer Liste sein. Es ist manchmal auch sinnvoll, den Elementen einer Liste Namen zuzuweisen. Listen werden mit list(element1, Element2,...) bzw. benannte Listen mit list(e1 = Element1, E2 = Element2,...) erzeugt. Der Zugriff auf Elemente einer Liste erfolgt mittels des [[ ]] Operators. 2 Datenstrukturen 2.4 Dataframes Bei Dataframes (Datentabellen?), die mit data.frame() erzeugt werden können, handelt es sich um spezielle Listen, die die Einschränkung haben, dass die einzelnen Elemente nur Vektoren gleicher Länge sein dürfen. Dataframes sind die typische Datenstruktur für Datensätze! Sehr viele Funktionen erwarten Dataframes als Argument(e). Dataframes können wie Listen und wie Matrizen indiziert werden. Um einen Dataframe nach den Werten einer Variable aufzuteilen, benutzt man z.b.: split(erstsemester, Erstsemester$Hauptfach). merge() vereinigt zwei verschiedene Dataframes. Beispiel anhand des Erstsemester Dataframes: NNamen <- data.frame( Matrikel.Nr = c(43678, 88475, 88766, 89045), Nachname = c("troschke", "Busse", "Michaelis", "Schoffer")) merge(erstsemester, NNamen, all = TRUE) Ein detailliertes Beispiel findet man unter?merge. Listen Dataframes Verschiedenes Im Gegensatz zu Vektoren kann hier nicht vektorwertig indiziert werden. Namen statt eines Index sind möglich. Auf benannte Elemente kann man einfacher mit dem $ Operator zugreifen: Liste$Elementname Name <- c("olaf", "Sven", "Anja", "Martina", "Eike") MN <- c(89045, 43678, 88475, 69781, 88766) HF <- c(rep("statistik", 2), rep("datenanalyse", 2), "Mathematik") Erstsemester <- data.frame(vorname = Name, 2 Datenstrukturen 2.5 Verschiedenes Matrikel.Nr = MN, Hauptfach = HF) Erstsemester$Matrikel.Nr[3] Erstsemester[2:3, 2] Listen subset() und %in% factor() und ordered() L1 <- list(c(1, 2, 5, 4), matrix(1:4, 2), c("a", "Be")) L1[[2]] # Das zweite Element von L1 L1[[2]][2, 1] # davon das Element [2, 1] L1[[1]][3] #-> 5 L2 <- list(info = "Unsinn", Liste = L1) L2$Info # Das Element "Info" L2[["Info"]] # Das Element "Info" L2[[2]][[1]][3] # doppelter Listenzugriff L2$Liste[[1]][3] #-> 5 (das gleiche in grün) str(l2) # liefert wieder detaillierte Einsicht in die Struktur Experten: Intern ist alles ein Vektor! Was ist aber der Unterschied zwischen L2[1] und L2[[1]] in obigem Beispiel? Tipp: Vektoren dürfen nur Elemente gleichen Typs mit Länge 1 enthalten. Häufig möchte man bestimmte Zeilen eines Dataframes extrahieren, abhängig von Werten gewisser Variablen. Prinzipiell geht das per Indizierung, wie etwa: Erstsemester[Erstsemester$Hauptfach == "Statistik", ] Eine mächtige(re), einfach zu bedienende Funktion zu diesem Zweck ist subset(): subset(erstsemester, Hauptfach == "Statistik") Wenn man dazu noch den Operator %in% verwendet, hat man sehr komplexe Auswahlmöglichkeiten in Dataframes: subset(erstsemester, Hauptfach %in% c("statistik", "Datenanalyse")) Zur Darstellung diskreter und qualitativer Merkmale bieten sich Faktoren an. Zur Erzeugung von Objekten für Merkmale ohne natürliche Anordnung, z.b. verschiedene Farben, verwendet man die Funktion factor(). Für solche Merkmale, die angeordnet werden können, gibt es ordered(). Wichtig werden Faktoren im Bereich linearer Modelle und zur Aufteilung eines Datensatzes gemäß solch eines Faktors, insbesondere auch zur Grafikerstellung.

8 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 64 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 65 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 66 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 67 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 68 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 69 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 70 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 71 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 72 factor() und ordered() Allgemeines zu Datenstrukturen Daten einlesen read.table() trt <- factor(rep(c("control", "Treated"), c(3, 4))) trt <- factor(rep(c("statistik", "Datenanalyse"), c(3, 4))) str(trt) # interne Kodierung des Faktors mode(trt) # wird als Zahl gespeichert length(trt) # Anzahl Einträge table(trt) # Tabelle der Levels Wenn man ein Objekt indiziert, kann ein niedriger dimensionales Objekt entstehen, ohne dass man es will (Probleme in komplexen Programmen). Die Lösung: drop = FALSE spezifizieren, wie in X[1, 1, drop = FALSE]. Neben den Funktionen str() und length(), kann auch mode() nützlich sein. Es gibt natürlich auch komplexe Zahlen, z.b.: 2+3i. View(x) zeigt das Objekt x im Spreadsheet, falls möglich. Da es zur Funktion read.table(), die für das Einlesen eines Datensatzes als Dataframe gedacht ist, eine große Menge verschiedener Argumente gibt, werden hier nur einige aufgelistet (weitere siehe?read.table): file (Pfad und) Dateiname header = FALSE Spaltennamen vorhanden? sep = "" Spaltenseparator dec = "." Dezimalzeichen X <- data.frame(a = c(2, 5, 7), B = c("a", "h", "i")) write.table(x, "c:/temp/x_daten.txt") Y <- read.table("c:/temp/x_daten.txt") Klassen nach S 4 Allgemeines zu Datenstrukturen Daten einlesen scan(), readlines() Ein Abstecher zu S 4. Bei (Objekt-) Klassen, die nach den neuen Konventionen erzeugt sind, handelt es sich um eine weitere Datenstruktur. Klassen können in sogenannten Slots beliebige andere Objekte enthalten, meist also Vektoren, Matrizen, Dataframes, Listen, etc. Auch wenn man zunächst noch keine eigenen Klassen erzeugen will, kann man doch auf ein Objekt in einem Slot eines existierenden Klassenobjekts zugreifen wollen, nämlich mit Operator, z.b.: X <- matrix(1:4, 2) X[1, 1] X[1, 1, drop=false] sqrt(-1:1) sqrt(-1:1 + 0i) View(iris) # ohne Verlust von Dimensionen # OK. # So geht s auch komplex! # ansehen im Spreadsheet Eine wesentlich mächtigere, aber auch komplizierter zu handhabende Funktion zum Lesen von ASCII Dateien ist scan(). Damit können auch Dateien mit sehr verschiedenen und komplizierten Datenstrukturen eingelesen werden. Ein Blick in die Hilfe (?scan) lohnt sich! Zum Lesen von ASCII Dateien unterschiedlich langer Zeilen eignet sich readlines(). Da das Zeichen \ ein Sonderzeichen in R ist, kann der Pfad zu einer Datei unter Windows nicht wie üblich angegeben werden. Stattdessen kann entweder eine Verdoppelung ( \\ ) oder das Zeichen / verwendet werden. Klassen nach S 4 Daten einlesen und exportieren Daten schreiben write(), write.table(),... setclass("neu", representation(x = "numeric", y = "numeric")) n1 <- new("neu", x = rnorm(10), y = 1:10) n1[1]; n1[[1]]; n1$x # Taugt alles nicht! # Die Lösung!!! 3 Daten IO 3.1 Daten in Textdateien Wer Daten analysieren will, muss diese zunächst einmal in das jeweilige Statistik Paket einlesen / importieren (und später evtl. wieder schreiben / exportieren). Am einfachsten ist das für Textdateien mit den Funktionen read.table(), scan() und read.fwf(), aber auch das Lesen von komplizierteren Strukturen, aus Datenbanken (data warehouses, z.b. der Formate ODBC, PostgreSQL, MySQL,...), Binärdateien, oder Formaten anderen Statistikpakete z.b. (S PLUS, SPSS, Minitab, SAS Xport,...) ist möglich. Analog zu den eben kennengelernten Funktionen zum Einlesen von ASCII Daten, gibt es auch solche zum Schreiben: write.table() ist das Analogon zu read.table() (siehe das Beispiel dort), mit sehr ähnlichen Argumenten. write() kann als Gegenteil von scan() angesehen werden, wobei insbesondere das Argument der Spaltenzahl, ncolumns, dem Voreiligen Streiche spielen kann.

9 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 73 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 74 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 75 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 76 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 77 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 78 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 79 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 80 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 81 Datenbanken Datenbanken RODBC Excel Daten einlesen 3 Daten IO 3.2 Datenbanken Wer mit wirklich großen Datenbeständen arbeitet, wie etwa bei Kundendatenbanken (z.b. in Einzelhandelsketten wie Karstadt) Mobilfunk (Abrechnung, Netzentwicklung) Computerchipherstellung Genomforschung (DNA-Sequenzierung,...) hat keine Daten der Größe Kilo- oder MegaByte, sondern kommt in Bereiche von Giga- oder TeraByte (10 12 ). Danach kann man dann Befehle aus dem Paket benutzen (siehe die Online-Hilfe) und z.b. sagen: library("rodbc") # das Paket laden channel <- odbcconnect("mineur", case="nochange") # Verbindung öffnen zum Eintrag "mineur" sqltables(channel) # Zeigt die Namen der vorhandenen Tabellen an sqlcolumns(channel, "iristab") # Zeigt die Spaltennamen und zugehörige Datentypen an sqlquery(channel, "select * from iristab") # Gibt Tabelle "iristab" vollständig aus. sqlquery(channel, "select * from iristab where Species = setosa ") # Gibt Zeilen der Tabelle "iristab" aus, # bei denen die Variable "Species" den Eintrag "setosa" hat. close(channel) Excel Dateien können über kleine Umwege gelesen werden: RODBC, ein Interface zu Mircosofts Datenbanksprache ODBC. R Excel Interface über DCOM Server (mächtig, aber umständlich). Export von Excel zu ASCII (einfach für 1-2 Datensätze). Die Funktion read.xls() im Paket gdata (benötigt Perl). Die Funktion read.xls() im Paket xlsreadwrite (benötigt Windows). Datenbanken Man kann also nicht mehr den vollständigen Datensatz auf den Rechner laden und Auswertungen machen, sondern man muss Teilmengen der Daten von der Datenbank anfordern und evtl. schon elementare Rechnungen vom Datenbanksystem durchführen lassen. Zur Kommunikation mit Datenbanken (hier wird meist die Sprache SQL verwendet: Structured Query Language ) bieten sich u.a. die folgenden R packages an (Details in der jeweiligen Dokumentation): PostgreSQL, RmSQL, RMySQL, RSQLite und RPgSQL für verschiedene SQL Systeme (meist unter Unix). RODBC für Microsofts Standard der ODBC Datenbanken (z.b. in Access, Excel), aber auch mit der Möglichkeit z.b. über MyODBC Treiber auf MySQL Datenbanken zuzugreifen. Datenbanken RODBC Die Tabelle ForestCover enthält Daten für die Forstwirtschaft. Es gibt insgesamt Beobachtungen und 55 Variablen, also insgesamt Einträge. Um diese Daten aus einer ASCII Datei mit den intelligenten R Funktionen einzulesen, braucht man eine erhebliche Zeit und etwa 1GB RAM. Wir sehen uns die Geländesteigungen an, wo Pappeln (CoverType = 4) bzw. Espen (CoverType = 5) wachsen und eine Straße nicht weiter als 100 Meter entfernt ist. Excel Daten einlesen RODBC Um unter Windows mit Hilfe des Pakets RODBC auf Daten in einer Excel (oder Access) Tabelle zuzugreifen, kann man analog vorgehen. Die Funktionen odbcconnectexcel() (für altes Excel, nur mit 32-bit R) und odbcconnectexcel2007() erledigen das wie folgt: library("rodbc") # das Paket laden und Verbindung herstellen: channel <- odbcconnectexcel2007("c:/rkursdaten.xls") sqltables(channel) # Zeigt Namen der vorhandenen Tabellen an sqlcolumns(channel, "iris") sqlquery(channel, "select PetalLength from \"iris$\"") # Gibt die Spalte "PetalLength" der Tabelle "iris$" aus. sqlquery(channel, "select * from \"iris$\" where Species = setosa and SepalLength < 5") # Gibt diejenigen Zeilen der Tabelle "iris$" aus, # bei denen die Variable "Species" den Eintrag "setosa" hat und # der Wert von "SepalLength" kleiner als 5 ist. close(channel) # Verbindung wieder schließen Datenbanken RODBC Datenbanken RODBC Binärdaten Beispiel 1: Um unter Windows mit Hilfe des packages RODBC auf eine MySQL Datenbank zuzugreifen, muss die Datenquelle zunächst unter Windows als DSN (Data Source Name) bekannt gemacht werden. Unter Windows 7 findet man unter Start Systemsteuerung Verwaltung Datenquellen (ODBC) die Möglichkeit, eine Benutzer-DSN einzutragen. Hier wählt man den MySQL ODBC Treiber, der zunächst evtl. noch installiert werden muss, und trägt dann z.b. ein: Data Source Name: mineur (Name, den man in R angibt) Host (oder IP): (Name des Servers) Database Name: mineur (Name auf dem Server) User: Student (Benutzername auf dem Server) Password: Student (zugehöriges Passwort) sqltables(channel) sqlcolumns(channel, "ForestCover")$COLUMN_NAME PappelSt <- sqlquery(channel, "select Slope from ForestCover where CoverType = 4 and HorDistRoad < 100") EspenSt <- sqlquery(channel, "select Slope from ForestCover where CoverType = 5 and HorDistRoad < 100") summary(pappelst) summary(espenst) close(channel) # Verbindung wieder schließen 3 Daten IO 3.3 diverse Datenformate Natürlich gibt es nicht nur ASCII Dateien und Datenbanken, sondern auch die verschiedensten, z.t. proprietären Binärformate unterschiedlicher Programme und Tools (darunter auch Statistik-Programme).

10 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 82 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 83 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 84 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 85 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 86 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 87 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 88 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 89 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 90 Binärdaten Connections Datum und Zeit konvertieren Man kann Daten in einem platzsparenden Binärformat mit Hilfe der Funktion save() speichern. Wir haben schon save.image() kennengelernt, womit man nicht nur ein Objekt, sondern gleich den ganzen Workspace in einer Binärdatei speichert. Das Lesen einer mit save() oder save.image() gespeicherten Datei geschieht mit load(). Für Binärformate einiger Statistik-Programme gibt es, zumindest für den Import, Funktionen (Filter) im package foreign, nämlich für Epi, Minitab, SAS Xport, S PLUS, SPSS, Stata,... Für einige andere Binärdateien gibt es auch Importfilter. Eine Suche auf CRAN und im WWW hilft manchmal weiter. read.table(file("clipboard"), header = TRUE) x <- scan(file("clipboard")) write(x, file = file("clipboard", open = "w"), ncol = 2) Beim Importieren von Daten werden Zeitformate aus Datenbanksysteme meist richtig übernommen. Kommen die Daten aber aus anderen Datenquellen, so muss man meist Zeichenketten, die Datum und Zeit repräsentieren, in ein Zeitobjekt umwandeln. Es gibt drei Arten von Zeitobjekten: Objekt Konvertierung Sinn Date as.date() Rechnen mit Datumsangaben POSIXlt strptime() Rechnen mit Datum, Uhrzeit, inkl. Zeitzonen und Sommer-/Winterzeit POSIXct as.posixct() konvertiert nach POSIXct, das besser in data.frames funktioniert als POSIXlt Solange man nur ein Datum ohne Uhrzeit benötigt, kann man mit as.date() arbeiten. Connections Objekte (..., Funktionen!) speichern und laden Datum und Zeit konvertieren Es gibt auch Binärdaten Formate, für die kein Filter erhältlich ist. Man Eine weitere und sehr wichtige Möglichkeit in R Objekte zu speichern ist Es werden dazu Formalismen benötigt, die sagen, an welcher Stelle einer kann recht leicht eigene Import-Funktionen schreiben, indem man dump(). Es wird nämlich eine Text Repräsentation des jeweiligen Objekts Zeichenkette z.b. die Information des Tages, des Monats oder der Minute Connections (vgl.?connections) benutzt. in eine Datei gespeichert, die wieder in R mit source() eingelesen stehen. Es wird symbolisiert (siehe?strptime): werden kann. Bei Connections handelt es sich um Verbindungen zum Lesen bzw. %b abgekürzter Monatsname in aktueller Ländereinstellung Schreiben von Informationen zu einem Gerät: Dieses Vorgehen eignet sich dazu %d Tag (01 31) %H Stunde (00 23) file() Datei auf dem lokalen Rechner oder im lokalen Netzwerk Objekte zwischen S PLUS und R untereinander oder auf %I Stunde (01 12) pipe() Direkte (streaming) Eingabe aus einem Programm verschiedenen Betriebssystemen auszutauschen (unabhängig von %m Monat (01 12) fifo() First In First Out, Ein- / Ausgabe aus einem anderen Binärdarstellungen) und %M Minute (00 59) laufenden Prozess (nicht unter Windows) Objekte außerhalb von R zu editieren. url() Zugriff auf Daten im Internet, z.b. http, ftp,... %p AM/PM (mit %I verwendet) gzfile(), bzfile() Direktes Lesen und Schreiben komprimierter Daten Letzterer Punkt findet insbesondere bei Funktionen Verwendung, da es %S Sekunde (00 61) (wegen Schaltsekunden nicht bis nur 59) socketconnection() Allgemeinste Zugriff auf ein Gerät im Sinne des sehr lästig ist, längere Funktionen in der Kommandozeile zu bearbeiten, %y Jahr ohne Jahrhundert (00 99; bekommen eine 20 davor, sonst Betriebssystems. und daher i.a. auf externe Editoren zurückgegriffen wird. eine 19) Hier kommt source() zum Wiedereinladen der Funktion zum Einsatz. %Y Jahreszahl mit Jahrhundert (z.b. 2012) Connections Datum und Zeit Datum und Zeit konvertieren Das wirkliche Lesen und Schreiben der Daten aus bzw. zu Connections geschieht dann mit readbin() und writebin() für den komfortablen Zugriff einzelner Bytes einer Binärdatei und readchar() und writechar() für den Zugriff auf Character in Binärdateien. Eine interessante Möglichkeit Connections zu nutzen ist, eine Verbindung zur Zwischenablage herzustellen, z.b. zum Einlesen (bzw. Schreiben) kleiner Datensätze aus dem Programm oder aus Excel. Die Funktion file() unterstützt eine entsprechende "clipboard" Connection (bzw. "X11_clipboard"). 3 Daten IO 3.4 Datum und Zeit Oftmals möchte und muss man mit Datum oder Zeitangaben rechnen. Beispiele sind: Anmeldezeiten von Studierenden in einer Vorlesung Alter als Differenz aus aktuellem Datum und Geburtsdatum Abstand zwischen Temperaturmessungen Überlebensdauer von Bauteilen oder Menschen R_1.0.0 <- "Feb 29, 2000" R_1.0.0Date <- as.date(r_1.0.0, "%b %d, %Y") R_3.0.2 <- " )" R_3.0.2Date <- as.date(r_3.0.2, "%Y-%m-%d") Ligges <- "17. September 1975" LiggesDate <- as.date(ligges, "%d. %b %Y") Vorlesung <- " , 08:15 Uhr" VorlesungPOSIXlt <- strptime(vorlesung, "%d.%m.%y, %H:%M")

11 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 91 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 92 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 93 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 94 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 95 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 96 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 97 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 98 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 99 Mit Datum und Zeit rechnen Grafik Grafik: Devices Wichtige Funktionen zum Rechnen mit Datums- und Zeitdaten: Beginnen wir mit den konventionellen Grafikfunktionen: Vorteile von Vektor-Grafik Formaten: Funktion Bedeutung +, -,... Rechnen mit Zeiten difftime() Zeitdifferenz in verschiedenen Einheiten berechnen format() Formatierte Ausgabe von Daten, mit einer Formatspezifikation wie auf der vorigen Folie weekdays() Wochentage zu Daten Sys.time() Das aktuelle Datum Wer eine Grafik macht, kann diese mit vielen Software Produkten (z.b. S PLUS, Excel) Zusammenklicken. Wer viele Grafiken desselben Typs produzieren muss, möchte zur Automatisierung die Grafik programmieren können. Jetzt ein wenig mehr Struktur: Einfache explorative Grafiken können sehr leicht erzeugt werden. Hochwertige Grafiken für Publikationen und Präsentationen können erstellt werden. Objekte (Punkte, Linien, Text,... ) werden einzeln kodiert. Grafiken sind skalierbar ohne Qualitätsverlust (werden nicht pixelig). Meist sehr kleine Dateigröße, außer man zeichnet extrem viele einzelne Objekte (z.b. Datenpunkte). Oft sind die Grafiken nachträglich editierbar. Vorteile von Bitmap-Grafik Formaten: Sehr einfach in andere Software importierbar. Konstante Größe bei gegebener Auflösung, das wird aber nur bei extrem vielen Datenpunkten interessant. Insgesamt überwiegen i.d.r. die Vorteile der Vektor-Grafik Formate. Mit Datum und Zeit rechnen Grafik: Devices Grafik: Devices und Funktionsarten R_3.0.2Date - R_1.0.0Date # Time difference of 4957 days Sys.time() # " :15:41 CET" difftime(sys.time(), VorlesungPOSIXlt, unit = "week") # Time difference of 6 weeks format(vorlesungposixlt, "%d.%m.%y %H:%M") # " :15" format(vorlesungposixlt, "%d. %b %y") # "18. Okt 13" weekdays(vorlesungposixlt) # "Freitag" 4.2 Devices Die Liste der möglichen Devices umfasst (u.a.) Bildschirmgrafiken für das interaktive Arbeiten: windows, x11 (Unix), quartz (Mac). Wenn man einfach mit der Grafikerzeugung im interaktiven Modus beginnt, so wird als Device automatisch die Bildschirmgrafik gestartet. Im nicht interaktiven Modus ist es das pdf Device. Die übliche Reihenfolge zum Produzieren einer Grafik ist: Device starten, z.b. postscript("c:/testgrafik.ps") Grafik erzeugen, z.b. plot(1:10) Device schließen mit dev.off() as.posixct(vorlesungposixlt) # " :15:00 CEST" ## 6 Woche x 7 Tage x 24 Stunden x 60 Minuten x 60 Sekunden ## ab Beginn der 1. Vorlesung: VorlesungPOSIXlt + 6 * 7 * 24 * 60 * 60 # " :15:00 CET" Abgesehen von Trellis (Lattice) Grafikfunktionen gibt es zwei Arten: High-level Funktionen erzeugen bzw. initialisieren eine Grafik. Low-level Funktionen fügen Elemente zu einer (per High-level Funktion) erzeugten Grafik hinzu. Grafik Grafik: Devices Grafik: High-level 4.1 Einführung S, an Interactive Environment for Data Analysis and Graphics R: A Language for Data Analysis and Graphics, so die Titel des Buches von R. Becker und J. Chambers, bzw. des Artikels von R. Gentleman und R. Ihaka. Demnach liegt eine der besonderen Stärken der S language, und insbesondere von R, im Grafikbereich. Zu unterscheiden gilt es die konventionellen Grafikfunktionen und die in Cleveland (1993) eingeführten Trellis Grafiken (in R: Lattice im gleichnamigen package). Siehe auch Murrell (2005). sowie die Vektor-Grafik Formate postscript: PostScript Grafiken, z.b. zum Einbinden in L ATEXDokumente. pdf: Adobe Portable Document Format. Z.B. zur direkten Präsentation, verteilen an andere oder Einbinden in PDFL ATEX Dokumente. win.metafile: Windows meta file, damit es auch unter Word klappt, und die Bitmap-Grafik Formate png: PNG Grafiken, ähnlich GIF. jpeg: JPEG kennt jeder: Qualitativ schlecht, aber enorm kleine Dateigröße gut für das Internet. bmp: Bitmap kann jeder lesen, aber enorm groß und nicht skalierbar. 4.3 High-level Grafik Einige wichtige und nützliche High-level Grafikfunktionen: plot() kontextabhängig hist() Histogramm barplot() Stabdiagramm image() Bilder (3. Dim. als Farbe) boxplot() Boxplot mosaicplot() Mosaikplots (kateg. Daten) coplot () Conditioning Plots pairs() Streudiagramm Matrix curve() Funktionen plotten persp() perspektivische Flächen dotchart() Dot Plots (Cleveland) qqplot() QQ Plot

12 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 100 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 101 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 102 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 103 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 104 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 105 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 106 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 107 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 108 Grafik: High-level Grafik: Parameter Grafik: Parameter Sehr viele Funktionen können auf verschiedene Objekte angewendet werden und reagieren intelligent, so dass für jedes Objekt eine sinnvolle Grafik erzeugt wird. plot() erzeugt z.b. einen Scatterplot bei Eingabe von zwei Vektoren, Residualplots bei Eingabe eines lm-objektes (lineares Modell), eine per Linie verbundene Zeitreihe bei Zeitreihenobjekten, etc. Hier wird die Objektorientiertheit von R ausgenutzt (später mehr dazu). Zunächst einmal gibt es eine Vielzahl von Parametern, die man an die meisten Grafikfunktionen in Form von Argumenten übergeben kann. Dazu gehören vor allem diejenigen, die in den Hilfen?plot und?plot.default aufgeführt sind, aber zum größten Teil auch die in?par. Mit der Funktion par() werden die wichtigsten Voreinstellungen im Grafikbereich durchgeführt. Die Hilfe dieser mächtigen Funktion sollte man sich wirklich ansehen. Insgesamt empfiehlt es sich, einmalige Einstellungen in der Grafikfunktion anzugeben, eine Änderung für mehrere Grafiken aber mit par() vorzunehmen. Viele Einstellungen ändert man ausschließlich in par(). Density Dichte 100 N(0,1) verteilter Zufallszahlen emp. Dichte theor. Dichte x Grafik: High-level Grafik: Parameter Grafik: Parameter Es ist also schnell mal ein Streudiagramm, Histogramm, Boxplot etc. erstellt, so dass man sich die Daten sehr schnell anschauen kann. data(trees) # Lade Beispieldatensatz plot(trees) # Malt Streudiagramm-Matrix plot(trees$girth, trees$volume) # ein bestimmtes Streudiagramm tree.lm <- lm(trees$volume ~ trees$girth) # Regression abline(tree.lm) # Regressionsgerade plot(tree.lm) # Plots zur Residualanalyse boxplot(trees) # Boxplots hist(trees$volume) # Histogramm einer Variablen qqnorm(trees$volume) # Normalverteilung??? Zu den am häufigsten gebrauchten Argumenten gehören: type Type (l=linie, p=punkt, b=beides, n=nichts) xlim, ylim Zu plottender Bereich in x-/y- Richtung log Logarithmierte Darstellung main, sub Überschrift und Unterschrift xlab, ylab x-/y-achsenbeschriftung axes Sollen Achsen geplottet werden col Farben bg Hintergrundfarbe pch Symbol für einen Punkt cex Größe eines Punktes bzw. Buchstaben lty, lwd Linientyp (gestrichelt,...) und Linienbreite mfrow Mehrere Plots in ein Device in Zeilen und Spalten ## 4 Plots in ein Device (2 Zeilen, 2 Spalten): par(mfrow = c(2, 2)) # Grafiken von vorher (mit ein paar geänderten Parametern): plot(trees$girth, trees$volume, pch = 7) boxplot(trees, col = "blue") hist(trees$volume, las = 1) qqnorm(trees$volume, cex.axis = 2) par(mfrow = c(1, 1)) Grafik: Parameter Grafik: Parameter Grafik: Ränder 4.4 Parameter Aber natürlich reicht es nicht immer, die Daten schnell anzuschauen, sondern die Grafiken müssen angepasst, d.h. z.b. mit Überschriften versehen werden. greend <- rgb(0.24,0.38,0.13) greenh <- rgb(0.477,0.754,0.258) x <- rnorm(100) # 100 N(0,1)-verteilte Zufallszahlen par(bg = "yellow") # Hintergrund gelb ##### Beschriftetes und manuell skaliertes Histogramm: hist(x, main = "Dichte 100 N(0,1)-verteilter Zufallszahlen", freq = FALSE, col = greenh, xlim = c(-5, 5), ylim = c(0, 0.6)) #### Hinzufügen der theor. Dichtefunktion in blau: curve(dnorm, from = -5, to = 5, add = TRUE, col = greend, lwd=3) margin 2 par("usr")[1] margin 3 par("usr")[4] plotting region line 3 line 2 line 1 line 0 par("usr")[3] line 0 margin 4 line 1 #### Nur das Histogramm in eine PDF Datei schreiben: pdf("c:/test.pdf") hist(x, main = "Dichte 100 N(0,1)-verteilter Zufallszahlen", freq = FALSE, col = greenh, xlim = c(-5, 5), ylim = c(0, 0.6)) dev.off() line 4 line 3 line 2 line 1 line 0 line 0 line 1 line 2 line 3 line 4 par("usr")[2] margin 1

13 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 109 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 110 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 111 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 112 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 113 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 114 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 115 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 116 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 117 Grafik: Ränder Grafik: Low-level Grafik: Mathematische Beschriftung outer margin 2 margin 2 margin 2 margin 3 plotting region margin 1 margin 3 plotting region margin 1 outer margin 3 margin 4 margin 4 margin 2 margin 2 outer margin 1 margin 3 plotting region margin 1 margin 3 plotting region margin 1 margin 4 margin 4 outer margin 4 ## Fortsetzung des "Histogramm" Beispiels! ## Eine Legende für das Histogramm: legend(-4.5, 0.55, legend = c("emp. Dichte", "theor. Dichte"), col = c(greenh, greend), lwd = 3) ## oder "interaktiv" mit legend(locator(1), legend = c("emp. Dichte", "theor. Dichte"), col = c(greenh, greend), lwd = 3) ## Beispiel: Eigene Achsen! Erzeuge zunächst Daten: gruen <- rnorm(10); rot <- rnorm(10, mean = 1) blau <- rnorm(10, sd = 5) plot(rep(1:3, each = 10), c(gruen, rot, blau), xlab = "Farben", col = rep(c("green", "red", "blue"), each = 10), xaxt = "n") axis(1, at = 1:3, labels = c("grün", "rot", "blau")) dnorm (x) f(x) = σ Dichte einer Normalverteilung 1 e (x µ)2 2σ2 mit µ = 0, σ = 1 2π x Grafik: Low-level Grafik: Mathematische Beschriftung Grafik: Transparenz 4.5 Low-level Grafik 4.6 Mathematische Beschriftung 4.7 Transparenz Da man häufig auch Elemente zu einem Plot hinzufügen will, etwa zusätzliche Punkte, Linien für Konfidenzintervalle, Beschriftungen, Legenden etc., gibt es auch sogenannte Low-level Funktionen. Solche Funktionen helfen z.b. bei der Berechnung von geeigneten Achsenbeschriftungen oder können einzelne Elemente zu einer bestehenden Grafik hinzufügen. R kann Grafiken mit mathematischen Symbolen und math. Notation beschriften (Murrell und Ihaka, 2000), z.b.: f (x) = 1 σ (x µ) 2 e 2σ 2. 2π Gerade für Publikationen und Präsentationen muss so nicht mit diversen Programmen getrickst oder gar darauf verzichtet werden. Die Eingabe einer Formel erfolgt mit Hilfe eines R Ausdrucks (Kontrollwörter sind an LATEX angelehnt), d.h. man schreibt die Formel einfach in R, lässt sie aber nicht auswerten, sondern übergibt sie direkt, z.b. mit expression(). Der Einsatz von Transparenz ist nützlich zur Visualisierung großer Datenmengen oder überlagerten Strukturen. Transparenz ist nicht für alle Devices verfügbar. x <- c(rnorm(10000), (a<- rnorm(1000, sd=0.5))) y <- c(rnorm(10000), a) plot(x, y, pch=16) plot(x, y, col = rgb(0, 0, 0, alpha = 0.05), pch = 16) Grafik: Low-level Grafik: Mathematische Beschriftung Grafik: Interaktion Eine Auswahl solcher Funktionen: abline() intelligente Linie mtext() Text in den Rändern arrows() Pfeile points() Punkte axis() Achsen polygon() (ausgefüllte) Polygone grid() Gitternetz segments() Linien (vektorwertig) legend() Legende text() Text lines() Linien (schrittweise) title() Beschriftung Für Details empfiehlt sich dringend ein Blick auf die Hilfeseite?plotmath. Zusätzlich könnte man sogar noch Variablen einfügen und automatisch ersetzen lassen. Details können im R Newsletter 2/3 nachgelesen werden. ## Dichtefunktion einer N(0,1)-Verteilung: curve(dnorm, from = -5, to = 5, col = greenh, lwd = 3, main = "Dichte einer Normalverteilung") text(-5, 0.3, adj = 0, cex = 1.3, expression(f(x) == frac(1, sigma ~~ sqrt(2*pi)) ~~ e^{frac(-(x - mu)^2, 2 * sigma^2)})) text(5, 0.3, adj = 1, cex = 1.3, col = greenh, expression("mit " * {mu == 0} * ", " * {sigma == 1})) 4.8 Interaktion R selbst stellt keine wirklich interaktiven Grafiken zur Verfügung. Minimale Interaktion ist allerdings gegeben durch die Funktionen locator(), die ausgibt, wohin man in einem Plot klickt, und identify() zur Ausgabe des Indexes derjenigen Datenpunkte, in deren Nähe man klickt, zum Beispiel: plot(trees$girth, trees$volume) identify(trees$girth, trees$volume)

14 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 118 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 119 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 120 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 121 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 122 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 123 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 124 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 125 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 126 Grafik: Interaktion mit rgl KEINE Kreis-/Kuchendiagramme KEINE Kreis-/Kuchendiagramme Auswege sind (Beispiele werden vorgeführt): Eine Kommunikationsmöglichkeit mit ggobi (ein interaktives Visualisierungssystem), das Paket rgl von Daniel Adler, das iplots Paket von Simon Urbanek. Idee 4.9 KEINE Kreis-/Kuchendiagramme Zur Visualisierung von Klassenanteilen an einer Gesamtheit wird häufig ein Kuchen- bzw. Kreis-Diagramm verwendet. Dabei wird ein Kreis so in Sektoren aufgeteilt, dass die Sektorflächen (!) proportional zu den absoluten (bzw. relativen) Klassenhäufigkeiten sind. Die Kreissektoren erinnern an Kuchenstücke. Unterschiedlich große Gesamtheiten können durch proportional zur Größe der Gesamtheit gewählte Kreisflächen (!) bei mehreren Kreis-Diagrammen angedeutet werden. Ganz schlimm: Niemals 3D-Kuchendiagramme!!! CDU/CSU Grüne SPD Linke FDP sonstige CDU/CSU Grüne SPD Linke FDP sonstige Wahlumfrage des Emnid Instituts vom Versuche 3 und 4 Grafik: Interaktion mit rgl KEINE Kreis-/Kuchendiagramme KEINE Kreis-/Kuchendiagramme library("rgl") plot3d(iris, size = 3, col = as.numeric(iris$species)) x <- y <- seq(-10, 10, length= 30) f <- function(x,y) {r <- sqrt(x^2+y^2); 10 * sin(r)/r } z <- outer(x, y, f) rgl.clear() persp3d(x, y, z, color = "red", zlim = c(-1.2, 12), back = "fill", front = "fill", alpha = 0.5) persp3d(x, y, z+2, color = greend, zlim = c(-1.2, 12), add = TRUE, back = "fill", front = "fill", alpha = 0.5) Wahlumfrage des Emnid Instituts vom FDP CDU/CSU SPD Sonstige DIE LINKE GRÜNE Wahlumfrage des Emnid Instituts vom Versuch 1 Was sollte verbessert werden? 3D: Flächen hinten wirken kleiner als die Flächen vorne Farben: Dunkle Farben wirken mächtiger als helle Farben: Leuchtende Farben ziehen die Aufmerksamkeit an, graue Töne werden weniger wahrgenommen. Kreissegmente (Winkel) viel schlechter vergleichbar als Stäbe / Balken Niemals 3D-Kuchendiagramme verwenden! Kreisdiagramme vermeiden! Grafik: Interaktion mit iplots KEINE Kreis-/Kuchendiagramme KEINE Kreis-/Kuchendiagramme ## iplot library("iplots") attach(trees) ihist(girth) ihist(height) ihist(volume) iplot(girth, Volume) mylm <- lm(volume ~ Girth) iabline(mylm) iplot(height, Volume) detach(trees) Wahlumfrage des Emnid Instituts vom FDP CDU/CSU SPD Sonstige DIE LINKE GRÜNE Viel besser: Balkendiagramme verwenden! Dabei an geeignete Farbwahl denken Im folgenden Beispiel ist die Farbwahl entgegen der Konvention getroffen worden, wobei aber die Farbtöne zumindest ähnlich gehalten wurden und die Einfärbung letztendlich weniger ablenkend wirken sollte. Wahlumfrage des Emnid Instituts vom Versuch 2

15 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 127 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 128 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 129 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 130 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 131 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 132 Umsatz zweier Firmen Maier Müller Quartal (= t 1) Umsatz zweier Firmen Quartal (= t 1) Müller Maier Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 133 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 134 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 135 KEINE Kreis-/Kuchendiagramme Statistische Grafik Gute und schlechte statistische Grafik prozentuale Häufigkeit Wahlumfrage des Emnid Instituts vom CDU/CSU GRÜNE SPD DIE LINKE FDP Sonstige Parteien Wahlumfrage des Emnid Instituts vom Versuch 5 Anforderungen an statistische Grafik ist gute vollständige, selbsterklärende Beschriftung (siehe Seite??) Lesbarkeit Vergleichbarkeit Objektivität Viele Grafiken, die man im täglichen Leben sieht, z.b. in Zeitungen, Zeitschriften, Broschüren, Werbematerial, sind leider oft verfälschend, weil sie ohne besseres Wissen und Reflektion unabsichtlich so erstellt werden, sie absichtlich den Blick des Betrachters auf bestimmte Teilgebiete lenken oder von anderen ablenken sollen. Umsatz in Mio EUR Umsatz der Firma Maier Quartale 0 bis 5 Umsatz in Mio EUR Umsatz der letzten 3 Quartale Die Gefahr der verfälschenden Darstellung bei unterschiedlich gewählter Skalierung ist direkt offensichtlich. Statistische Grafik Statistische Grafik dient dazu 4.10 Statistische Grafik Informationen in Daten zu finden Zusammenhänge in Daten zu erkennen Daten schnell und ohne Worte zu beschreiben Informationen ohne Worte schnell an andere weiterzugeben Gute und schlechte statistische Grafik Auf den nächsten Folien sollen schlechte Grafiken besseren Alternativen gegenübergestellt werden. Das soll zeigen, auf welche verfälschenden Elemente man in jedem Fall verzichten sollte oder von denen man sich nicht täuschen lassen sollte. Diese Beispiele sollen also dazu dienen, den Blick für Probleme zu schärfen. Als abschreckende Beispiele haben wir bereits die schlechte Vergleichbarkeit der Kreissegmente bei Kreisdiagrammen und die wegen der Perspektive stark verfälschende Darstellung bei den 3D Tortendiagrammen gesehen. Gute und schlechte statistische Grafik Bemerkungen Immer die selbe Skalierung der entsprechenden Achsen verwenden, an denen etwas verglichen werden soll! Man kann die Wahl der Skalierung nicht der Voreinstellung des Computerprogramms überlassen. Je nachdem, wie weit der Wertebereich von der Null weg liegt und variiert, sollte man überlegen, ob die Null inkludiert werden sollte oder nicht. Ist die Null in der Nähe, sollte man sie aufnehmen, das sie eine natürliche Basis für Vergleiche liefert (bzw. die 1 bei Indizes / Verhältniszahlen). Ist die Null weit weg vom Geschehen, sieht man nicht mehr gut Unterschiede der dargestellten Beobachtungen. Einzelne Punkte, die weit vom Geschehen entfernt liegen, werden oft nicht dargestellt (wie Fernpunkte im Boxplot), Statistische Grafik Gute und schlechte statistische Grafik Gute und schlechte statistische Grafik Daher ist es wichtig, dass Informationen in Grafiken neutral und objektiv weitergegeben werden. Das ist schwierig, weil der Statistiker schon ein Vorurteil hat, der Kunde schon einen konkreten Wunsch zum Ergebnis hat, die Wahl von Farben, Anordnungen usw. die Wahrnehmung (z.t. unbewusst oder unterbewusst) beeinflusst. Beispiel: Umsatzentwicklung zweier Firmen Umsatz in Mio EUR Umsatzindizes x t x4, yt y Beispiel: Kursverlauf der BVB Aktie Kursverlauf der BVB Aktie vom 17. November 2000 bis zum 24. November Tageswerte, es liegen jeweils vor: Eröffnung, Schluss, Tageshoch, Tagestief, gehandeltes Volumen Wir starten mit einer Grafik der letzten 2 Jahre. Auf der nächsten Folie werden mit zwei Grafiken die Entwicklung des Umsatzes von Firma Maier vor und nach Quartal 5 dargestellt mit unterschiedlicher Skalierung der vertikalen (y) Achse.

16 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 136 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 137 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 138 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 139 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 140 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 141 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 142 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 143 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 144 Gute und schlechte statistische Grafik Gute und schlechte statistische Grafik Mosaikplots Kurs pro Aktie in EUR Tagestief, hoch und Schlusskurse der BVB Aktie Tageshoch, tief Schlusskurs Datum Bemerkungen Lücken in einer Achse (linker Teil) werden leider immer wieder verwendet. Lücken in der Achse sind aber fast niemals sinnvoll! Hier ein Vergleich inkl. einer anderen Farbdarstellung. Es bietet sich die Verwendung eines perzeptiven Farbraums ab, der also die menschliche Farbwahrnehmung nachahmt. Ein Beispiel ist der hcl (hue, chroma, luminance), bei dem Farbton, Farbintensität und Helligkeit separat eingestellt werden können. Leider wird sehr oft der rgb (red, green, blue) Farbraum verwendet (wird z.b. für Kommunikation zwischen Rechner und Monitor verwendet). Hier ist es sehr schwierig, vergleichbare Farben darzustellen. Geschlecht m w Mosaikplot Diagnose / Geschlecht ACS av chf Diagnose Kursverlauf der BVB Aktie der letzten 2 Jahre ( ) Abbildung : Mosaikplot des Zusammenhangs von Diagnose und Geschlecht Gute und schlechte statistische Grafik Mosaikplots Mosaikplots Kurs pro Aktie in EUR Tagestief, hoch und Schlusskurse der BVB Aktie Tageshoch, tief Schlusskurs Volumen Volumen 4.11 Mosaikplots Bemerkungen: Durch die pro Faktorstufe des einen Merkmals gleich großen Flächen lassen sich Unterschiede der Verhältnisse der Faktorstufen des anderen Merkmals sehr gut vergleichen. Das Umsortieren von Merkmalen und Faktorstufen kann wichtig sein, da es die Darstellung verändert und zu anderer Einsicht führen kann (siehe folgende Abbildung) Datum Kursverlauf der BVB Aktie ( ) Hier sieht man wieder, dass die Präsentation eines Teilabschnitts der Daten immer vorsichtig interpretiert werden muss. Gute und schlechte statistische Grafik Mosaikplots Mosaikplots prozentuale Häufigkeit Wahlumfrage des Forsa Instituts vom prozentuale Häufigkeit CDU/CSU GRÜNE SPD DIE LINKE FDP Sonstige CDU/CSU GRÜNE SPD DIE LINKE FDP Sonstige Parteien Parteien Wahlumfrage des Forsa Instituts vom linker Teil verfälscht dargestellt Definition (Mosaikplot) Ein Mosaikplot ist ein Verfahren zur Visualisierung zweier oder mehrerer (aber weniger) qualitativer (nominalen, ordinalen oder seltener klassiert kardinalen) Merkmale mit folgenden Eigenschaften: Die Fläche der einzelnen Zellen ist proportional zur Anzahl der Fälle in dieser Zelle (analog zum Stabdiagramm und zum Histogramm) Die Gesamtfläche ist 1 und wird vollständig ausgenutzt. Zwischenräume dienen der Übersichtlichkeit und tragen nicht zu den Anteilen bei. Bei Visualisierung von mehr als 2 Merkmalen wird rekursiv vorgegangen. Diagnose Mosaikplot Diagnose / Geschlecht m w ACS av chf Geschlecht Abbildung : Mosaikplot des Zusammenhangs von Diagnose und Geschlecht

17 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 145 KF SM SR VHF ACS av chf Diagnose KF SM SR VHF m Geschlecht Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 146 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 147 w Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 148 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 149 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 150 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 151 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 152 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 153 Mosaikplots Spineplots Spineplots Mosaikplot Diagnose / Rhythmus Mosaikplot Geschlecht / Rhythmus 4.12 Spineplots Bemerkungen: Sehr schön ist der Zusammenhang zu erkennen, dass bei steigernder Herzfrequenz die Diagnose ACS immer wahrscheinlicher wird. Rhythmus Rhythmus Idee Wenn eines von zwei Merkmalen kardinal anstatt nominal oder ordinal ist, so kann ein Spezialfall eines Mosaikplots verwendet werden. Abbildung : Mosaikplots der weiteren Zusammenhänge Mosaikplots Spineplots Funktionen Rhythmus KF SM SR VHF Mosaikplot Diagnose / Rhythmus / Geschlecht Männer ACS av chf Frauen Diagnose Definition (Spineplot) Ein Spineplot ist ein eindimensionaler Spezialfall eines Mosaikplots. Er wird verwendet, wenn ein ordinales oder nominales Merkmal und ein kardinales Merkmal gemeinsam dargestellt werden sollen, und zwar das ordinale oder nominale Merkmal in Abhängigkeit vom kardinalen Merkmal. Dazu wird auf der x-achse das kardinale Merkmal klassiert dargestellt, wobei die Abstände der Klassengrenzen proportional zu der Anzahl der Beobachtungen in der entsprechenden Klasse ist. Die Höhe ist jeweils 1, wobei darin das zweite (nominale oder ordinale) Merkmal anteilsmäßig pro Klasse dargestellt wird. 5 Funktionen 5.1 Einführung Bisher sind uns schon einige Funktionen begegnet, darunter einfache wie sin(), aber auch komplexere wie read.table(), die verschiedene Argumente akzeptieren. Jegliches Arbeiten geschieht mit Funktionen! Abbildung : Mosaikplot: gemeinsame Darstellung von 3 Merkmalen Mosaikplots Spineplots Funktionen Bemerkungen: Bei Hinzufügen eines dritten Merkmals wird der Inhalt des Mosaikplots einfach erneut aufgeteilt (siehe Abbildung 4.4). Dünne Striche deuten an, dass es in einer Zelle gar keine Beobachtungen gab. Bei mehr als 3 4 Merkmalen wird die Darstellung bald unübersichtlich. Diagnose Spineplot zu Diagnose / Herzfrequenz chf ACS Herzfrequenz (in Hz) Abbildung : Spineplot von Herzfrequenz und Diagnose von 200 Patienten Ein Funktionsaufruf hat die Form funktionsname(argument1 = Wert1, Argument2 = Wert2, usw.), dabei kann die Benennung der Argumente u.u. weggelassen werden. Es gibt spezielle Funktionen mit Kurzformen, z.b. +. Der Ausdruck würde in voller Form lauten: "+"(3, 5). Der Name steht hier in Anführungszeichen, da es kein regulärer Name ist (solche beginnen mit Buchstaben!). Auch die Zuweisung ist eine Funktion: "<-"(x, 3). Es gibt Argumente, die Voreinstellungen (defaults) haben. Ein Argument ohne default muss beim Funktionsaufruf angegeben werden. Ein Argument mit Voreinstellung kann beim Funktionsaufruf geändert werden. Funktionsaufrufe müssen nicht immer Argumente besitzen, wie z.b. ls().

18 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 154 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 155 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 156 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 157 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 158 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 159 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 160 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 161 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 162 Funktionen Funktionen Bedingte Anweisungen Eigene Funktionen sind immer dann sinnvoll, wenn eine Folge von anderen Funktionsaufrufen (unter einem Namen) zusammengefasst werden soll, z.b. für mehrmaliges Ausführen mit verschiedenen Parametern. Man muss also zwischen den formal in der Funktion definierten Argumenten und den tatsächlich beim Funktionsaufruf gegebenen Argumenten unterscheiden. Die Regeln dazu werden in der folgenden Reihenfolge angewandt (Beispiel median()): 6 Konstrukte 6.1 Bedingte Anweisungen Die allgemeine Form einer Funktionsdefinition ist: Alle Argumente mit vollständigem Namen werden zugeordnet In vielen Fällen wird bei der Programmierung eine Fallunterscheidung Meine.Funktion <- function(argumente){ Befehlsfolge }, (x = 1:10). benötigt, etwa wobei die Argumente mit oder ohne Voreinstellung angegeben werden. Argumente mit teilweise passendem Namen werden den übrigen Beim Aufruf der Funktion werden die Argumente an die formalen Argumenten zugeordnet (na = TRUE). zur Überprüfung von Argumenten und zur Ausgabe von Befehlsfolge weitergereicht. Alle unbenannten Argumente werden der Reihe nach den übrigen Fehlermeldungen, formalen Argumenten zugeordnet. zum Abbruch eines iterativen Verfahrens bei Konvergenz und Nicht nur bei der Definition von Funktionen, sondern auch bei allen Übrige Argumente werden dem evtl. vorhandenen formalen zum Programmieren einer mathematisch / methodischen anderen Konstruktionen (for(), if()), können Befehlsfolgen, solange Argument... zugeordnet (s.u.). begründeten Fallunterscheidung. sie in geschweiften Klammern stehen, aus mehreren Zeilen bestehen. Auf das Fehlen eines formalen Arguments kann man innerhalb einer Funktion mit missing() testen. Funktionen Funktionen Bedingte Anweisungen Eine typische Definition einer Funktion könnte wie folgt aussehen: Für bedingte Anweisungen gibt es die Konstrukte a <- c(1, NA, 5, 3) (1) if(bedingung){ausdruck1} else{ausdruck2} median <- function(x, na.rm = FALSE) (2) ifelse(bedingung, Vektor1, Vektor2). { ## zunächst unbenannte Argumente: Mit (1) steht eine bedingte Anweisung für recht komplexe Ausdrücke zur #... viel code!... median(a) Verfügung, wobei die Bedingung aber nicht vektorwertig sein darf, oder sort(x, partial = half)[half]) median(a, TRUE) vielmehr nur das erste Element im Fall einer vektorwertigen Bedingung } median(true, a) # das macht keinen Sinn! verwendet wird. Der Teil else{ausdruck2} darf auch weggelassen werden. ## nun zumindest teilweise benannte Argumente: Diese Funktion hat zwei Argumente: x, na.rm. Zunächst wird die Bedingung ausgewertet. Ist diese wahr, so wird median(x = a, na.rm = TRUE) Nur das zweite hat einen default, nämlich FALSE. Ausdruck1 ausgewertet, sonst Ausdruck2. median(na.rm = TRUE, a) Die letzte Zeile der Funktion gibt den Wert der Funktion an. Sollen median(n = TRUE, a) Funktion (2) zeichnet sich durch vektorwertige Operationen aus. mehrere Werte (als Liste) zurückgegeben werden, benutzt man Je nach logischem Wert der vektorwertigen Bedingung wird das return(). zugehörige Element aus Vektor1 (bei wahr) oder Vektor2 (bei unwahr) gewählt. Funktionen Funktionen Bedingte Anweisungen Sei a ein Vektor, dann sind z.b. folgende Aufrufe sinnvoll: median(a) (na.rm muss nicht angegeben werden default) median(a, TRUE) (In richtiger Reihenfolge müssen Argumente nicht benannt werden.) median(na.rm = TRUE, x = a) (Benannte Argumente dürfen in beliebiger Reihenfolge stehen.) In der Definition einer Funktion ist der Einsatz des formalen Drei Punkte Arguments... möglich. Alle nicht zugeordneten tatsächlich gegebenen Argumente werden durch... aufgenommen und können innerhalb der Funktion weiterverarbeitet oder an andere Funktionen durch den Aufruf mittels... weitergegeben werden. Es dient also meist zum Durchreichen von Argumenten. Punkte <- function(x,...){ } x <- x - 2 median(x,...) x <- log(-1:100) Punkte(x) Punkte(x, na.rm = TRUE) x <- 5 if(x == 5){ # falls x = 5 ist: x <- x + 1 # x um eins erhöhen und y <- 3 # y auf drei setzen } else # sonst: y <- 7 # y auf sieben setzen if(x < 99) cat("x ist kleiner als 99\n") ifelse(x == c(5, 6), c("a1", "A2"), c("a3", "A4"))

19 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 163 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 164 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 165 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 166 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 167 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 168 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 169 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 170 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 171 Schleifen Schleifen Schleifen 6 Konstrukte 6.2 Schleifen Schleifen sind unverzichtbar, um eine größere Anzahl sich wiederholender Befehle (mit unterschiedlichem Parameter) aufzurufen. Etwa bei Simulationen kommen solche Schleifen sehr häufig zum Einsatz, weil beispielsweise gewisse Befehlsfolgen und Funktionen immer wieder mit unterschiedlichen Zufallszahlen gestartet werden müssen. Zu (1): Mit repeat{ Befehle } werden die Befehle immer wieder wiederholt. Die Schleife kann nur mit break beendet werden, das meist in einer bedingten Anweisung (if()) auftaucht. Zu (2): Mit while(bedingung){ Befehle } werden die Befehle solange wiederholt, wie die Bedingung erfüllt ist. Zu (3): Mit der Schleife for(wert in Objekt){ Befehle } wird von Wert zunächst der erste Wert von Objekt angenommen und alle Befehle mit diesem Wert ausgeführt. Danach werden alle Befehle ausgeführt, wobei Wert den zweiten Wert des Objekt annimmt usw. Wert muss nicht notwendigerweise in der Befehlsfolge benutzt werden. Beispiele (Schlechter Stil, nur zur Demonstration!!!): for(i in seq(along = x)){ # Für alle i im Vektor seq(along=x) x[i] <- x[i]^2 # Quadriere das i-te Element von x print(x[i]) # und gib es auf dem Bildschirm aus. } x^2 # BESSER (schneller, übersichtlicher)! x <- NULL for(i in 1:length(x)) # Hier kann was schief gehen! print(x[i]) for(i in seq(along = x)) # So ist es sicherer! print(x[i]) Schleifen Schleifen apply! Die einfachste Form einer Schleife ist replicate(). Das folgende Beispiel veranschaulicht den zentralen Grenzwertsatz mal wird der Mittelwert von 100 rechteckverteilten Zufallszahlen berechnet: zahlen <- replicate(1000, mean(runif(100)))) hist(zahlen) # Histogramm der erzeugten Mittelwerte Da Schleifen in R langsam sind, sollten sie möglichst vermieden werden, vor allem dann, wenn stattdessen vektorwertig gearbeitet werden kann. Grund: Alle Funktionen müssen innerhalb einer Schleife mehrfach statt einfach ausgewertet werden! 6 Konstrukte 6.3 apply! Wir wissen, dass vektorwertiges Arbeiten in R meist schneller ist als die Benutzung von Schleifen. Auf Vektoren und Matrizen ist nach kurzem Überlegen oft das Vorgehen leicht ersichtlich, etwa durch Vektor oder Matrixmultiplikation (%*%), äußeres Produkt (outer() oder %o%), Kronecker Produkt (%x%) oder die üblichen komponentenweisen Rechenoperationen. Es soll aber auch anders quasi-vektorwertiges Arbeiten möglich sein, nämlich mit apply(), lapply(), sapply() und tapply(). Schleifen Schleifen apply() Es gibt drei weitere Varianten von Schleifen, sowie zwei wesentliche Kontrollbefehle: (1) repeat{ Befehle } (2) while(bedingung){ Befehle } (3) for(wert in Objekt){ Befehle } (i) break: Der Befehl break beendet die Schleife vollständig. (ii) next: Mit den Befehl next wird innerhalb einer Schleife, ohne die folgenden Befehle auszuführen, in den nächsten Durchlauf gesprungen. Beispiele (Schlechter Stil, nur zur Demonstration!!!): i <- 0 repeat{ i <- i + 1 # Addiere 1 zu i. if(i == 3) break # Stoppe, falls i=3 ist. } while(i > 1) i <- i - 1 # Solange i > 1 ist, erniedrige i um 1. x <- c(3, 6, 4, 8, 0) # Vektor der Länge 5 (=length(x)) for(i in x) print(sqrt(i)) Eine wichtige Funktion für vektorwertiges Arbeiten auf Matrizen bzw. Arrays ist die Funktion apply(). Mit ihr können geeignete Funktionen auf jede Spalte oder Zeile einer Matrix angewendet werden, ohne dass komplizierte und langsame Schleifen eingesetzt werden müssen. Sie hat die Form: apply(x, margin, function), wobei X das Array (Matrix), margin die beizubehaltende Dimensionsnummer und function die komponentenweise (in ihrem ersten Argument) anzuwendende Funktion ist.

20 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 172 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 173 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 174 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 175 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 176 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 177 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 178 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 179 Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 180 apply() Zeichenketten Zeichenketten X <- matrix(c(4, 7, 3, 8, 9, 2), nrow = 3) apply(x, 1, max) # Zeilen-Maxima apply(x, 2, range) # Spalten-Extrema apply(x, 1, function(x) {sum(x^2)}) # Zeilenquadratsumme 7 Zeichenketten Ein weiterer Punkt in der Programmierung ist die Verarbeitung von Zeichenketten. Wie Zeichenketten (mit cat() und print()) auf die Konsole ausgegeben werden, haben wir bereits gesehen. Manchmal möchte man aber auch Zeichenketten anders verarbeiten, etwa zusammensetzen, zerlegen, darin suchen oder diese für die Ausgabe angemessen formatieren. x < cat(paste("die Variable x hat den Wert", x, "\n")) x <- "Hermann Müller"; y <- "Hans_Meier" strsplit(x, " ") # Vorname u. Nachname einzeln strsplit(y, "_") # Vorname u. Nachname einzeln grep("hans", c(x, y)) # Im 2. sub("ü", "ue", c(x, y)) # ü -> ue nchar(x) toupper(x) # HERMANN MÜLLER ep <- parse(text = "z <- 5") # jetzt eine Expression, eval(ep) # die ausgewertet werden kann lapply(), sapply() Zeichenketten Grafik: Trellis / Lattice Für Listen, Dataframes und Vektoren lässt sich besser die Funktion lapply() verwenden. Mit ihr wird das eingegebene Objekt komponentenweise bearbeitet: lapply(object, function,...), wobei weitere Argumente zur Funktion function als zusätzliche Argumente angegeben werden können. Das Ergebnis ist eine Liste (ein Listen-Element je Komponente des eingegebenen Objekts). sapply() funktioniert analog zu lapply(), versucht aber nach Möglichkeit die Ergebnisse zu einem Vektor bzw. einer Matrix zu vereinfachen. L <- list(x = 1:10, y = 1:5 + 0i) lapply(l, mean) # Liste wird beibehalten, mit Datentyp sapply(l, mean) # Vektor wird erzeugt - gleicher Datentyp! Typische Anwendungen von Zeichenkettenoperationen sind: Zusammensetzen von Buchstabenkombinationen und Nummern, etwa um eine Liste durchnummerierter Dateien nacheinander automatisch bearbeiten zu können Das Zerlegen von Strings in einzelne Teile, die durch Sonderzeichen voneinander getrennt sind Suchen, ob unter einer Liste von Zeichenfolgen bestimmte Zeichenkombinationen vorhanden sind benutzerfreundliche Ausgabe von Informationen in tabellarischer Form 8 Lattice Grafik Hier soll auf die Idee der Trellis (Cleveland, 1993) bzw. lattice (Sarkar, 2002) Grafiken eingegangen werden. Für das Paket lattice hat Deepayan Sarkar 2004 den Chambers Award der ASA gewonnen hat. tapply() Zeichenketten Grafik: Trellis / Lattice tapply() wendet Funktionen (typischerweise) auf Elemente eines Vektors an, wobei dieser Vektor jedoch durch weitere Argumente (Faktoren) gruppiert wird. Durch diese Gruppierung entstehen Tafeln, in die pro Gruppe das Ergebnis der angewandten Funktion eingetragen ist. data(warpbreaks) warpbreaks tapply(warpbreaks$breaks, warpbreaks[, 3], sum) tapply(warpbreaks$breaks, warpbreaks[,-1], mean) Eine Zusammenstellung der wichtigsten Funktionen für Operationen auf Zeichenketten: paste() Zusammensetzen von Zeichenketten strsplit() Zerlegen von Zeichenketten grep() sucht Zeichenfolgen in Vektoren sub(), gsub() zum Ersetzen gefundener Teil Zeichenfolgen match(), pmatch() Suchen von (Teil) Zeichenketten in anderen und charmatch() und Ausgabe der Positionen der Übereinstimmungen substring() Ausgabe und Ersetzung von Teil Zeichenfolgen nchar() Anzahl Zeichen in einer Zeichenkette toupper(), tolower() Umwandlung in Groß- bzw. Kleinbuchstaben formatc() erlaubt sehr allgemeine Formatierung parse() Konvertierung einer Zeichenfolge in eine expression deparse() und umgekehrt Das Paket lattice basiert auf dem Grafiksystem im Paket grid (Murrell, 2001). Beide Pakete sind in einer Standard R Installation enthalten. Grid Grafiken und Standard R Grafiken sind i.a. inkompatibel. Das CRAN Paket gridbase behebt einige dieser Inkompatibilitäten und ermöglicht die Integration grid- und Standard-Grafiken. Die Wörter trellis, lattice und grid lassen sich alle mit Gitter übersetzen: Es werden hier mehrere Grafiken gleichen Typs in einem Raster direkt nebeneinander dargestellt, wobei in jedem nur eine Teilgruppe der Daten zu sehen ist, z.b. nach einer anderen (Faktor-) Variable aufgeteilt.

Wahrscheinlichkeitsrechnung und Mathematische Statistik für Informatiker Software Folien von JProf. Uwe Ligges. Jörg Rahnenführer WS 2013/2014

Wahrscheinlichkeitsrechnung und Mathematische Statistik für Informatiker Software Folien von JProf. Uwe Ligges. Jörg Rahnenführer WS 2013/2014 Wahrscheinlichkeitsrechnung und Mathematische Statistik für Informatiker Software Folien von JProf. Uwe Ligges Jörg Rahnenführer WS 2013/2014 1 Statistiksoftware (R) 1.0 Statistiksoftware R R http://www.r-project.org

Mehr

Programmierung mit Teil I

Programmierung mit Teil I Programmierung mit Teil I Uwe Ligges TU Dortmund, WS 2014/15 Fakultät Statistik Einführung Datenstrukturen Daten IO Grafik Funktionen Konstrukte Zeichenketten Lattice Grafik Literatur 3 Inhalt 1 Einführung

Mehr

Datenaufbereitung, Grafische Datenanalyse

Datenaufbereitung, Grafische Datenanalyse Datenaufbereitung, Grafische Datenanalyse R-Übung 2 Statistik III für Nebenfachstudierende LMU WS 2013/14 David Rügamer 6. & 13. November 2013 Nach einer Vorlage von Toni Hilger (WS 11/12) und Arne Kaldhusdal

Mehr

Statistisches Programmieren

Statistisches Programmieren Statistisches Programmieren Session 1 1 Was ist R R ist eine interaktive, flexible Software-Umgebung in der statistische Analysen durchgeführt werden können. Zahlreiche statistische Funktionen und Prozeduren

Mehr

Running R. Windows Aus Menü. Lese R Code ein führt den Code auch gleich aus, eventuell muss vorher das Verzeichnis gewechselt werden.

Running R. Windows Aus Menü. Lese R Code ein führt den Code auch gleich aus, eventuell muss vorher das Verzeichnis gewechselt werden. Einführung 1 / 1 Einführung 2/1 Running R Windows Aus Menü Linux Lese R Code ein führt den Code auch gleich aus, eventuell muss vorher das Verzeichnis gewechselt werden. Auf der Konsole/Eingabeaufforderung:

Mehr

Einfaches Datenmanagement in R

Einfaches Datenmanagement in R Einfaches Datenmanagement in R Achim Zeileis 2009-02-20 1 Daten einlesen Datensätze werden in R typischerweise als Objekte der Klasse "data.frame" dargestellt. In diesen entsprechen die Zeilen den Beobachtungen

Mehr

Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung.

Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung. Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung. Die heutige Sitzung dient dem ersten Kennenlernen von MATLAB. Wir wollen MATLAB zuerst

Mehr

R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung.

R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung. R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung. Carsten Szardenings c.sz@wwu.de 7. Mai 2015 A 2 B 3 C 4 D 5 F 6 R 16 S 17 V 18 W 19 Z 20 H 7 I 8 K 9

Mehr

Kompaktwissen zu R. 1. Hilfe. Allgemein. Beispiele hilfreicher Internetseiten (mit weiteren Verweisen zu Einführungen und Tutorien)

Kompaktwissen zu R. 1. Hilfe. Allgemein. Beispiele hilfreicher Internetseiten (mit weiteren Verweisen zu Einführungen und Tutorien) Kompaktwissen zu R 1. Hilfe Allgemein Manuale und Archive von Mailinglisten Beispiele hilfreicher Internetseiten (mit weiteren Verweisen zu Einführungen und Tutorien) Bücher In R Starten des Hilfesystems

Mehr

Formale Methoden der Ökonomik: Einführung in die empirische Wirtschaftsforschung

Formale Methoden der Ökonomik: Einführung in die empirische Wirtschaftsforschung Übung Formale Methoden der Ökonomik: Einführung in die empirische Wirtschaftsforschung BACHELOR FT 2013 (HSU) Übung Emp. WiFo FT 2013 1 / 15 Datensätze Statistische Auswertungen gehen in den meisten Fällen

Mehr

Access und OpenOffice.org

Access und OpenOffice.org Access-Datenbanken in OpenOffice.org 1.1 einbinden Herausgegeben durch das OpenOffice.org Germanophone-Projekt Autoren Autoren vorhergehender Versionen Timo Kozlowski Alle in diesem Dokument erwähnten

Mehr

Prozess und Statistik. Einführung in. Eine R-Übersicht und Motivation R in der täglichen Arbeit zu nutzen. Günter Faes faes.de.

Prozess und Statistik. Einführung in. Eine R-Übersicht und Motivation R in der täglichen Arbeit zu nutzen. Günter Faes faes.de. Einführung in Eine R-Übersicht und Motivation R in der täglichen Arbeit zu nutzen Seite: 1 Präsentationsthemen Was ist R? R Installation R Grundlagen Das Menü Die ersten Schritte R Daten-Objekte und deren

Mehr

IDE Grundlagen Vektoren Matrizen Faktoren Dataframes Visualisierung Tips. Quick & dirty

IDE Grundlagen Vektoren Matrizen Faktoren Dataframes Visualisierung Tips. Quick & dirty Quick & dirty Eine pragmatische Einführung in R (Seminar Forschungsevaluation, Universität Wuppertal) Stephan Holtmeier kibit GmbH, stephan@holtmeier.de 31. Mai 2013 1 / 24 Unsere Entwicklungsumgebung:

Mehr

Datenvisualisierung mit JMP

Datenvisualisierung mit JMP Datenvisualisierung mit JMP Patrick René Warnat HMS Analytical Software GmbH Rohrbacherstr. 26 Heidelberg patrick.warnat@analytical-software.de Zusammenfassung Das JMP Paket ist ein Softwareprodukt der

Mehr

Statistik und Computer Statistische Software (R) Paul Fink, M.Sc. Formeln und Code Was ist Statistiksoftware?

Statistik und Computer Statistische Software (R) Paul Fink, M.Sc. Formeln und Code Was ist Statistiksoftware? Statistik und Computer Efron (2001): Statistik im 20. Jahrhundert Statistische Software (R) Paul Fink, M.Sc. Institut für Statistik Ludwig-Maximilians-Universität München Einführung Applications 1900 Theory?

Mehr

Einführung in die statistische Sprache R

Einführung in die statistische Sprache R Einführung in die statistische Sprache R M. Comp. Sc. Stefan Faußer Oktober 28, 2008 Überblick basiert auf der kommerziellen Sprache S, Source Code von R ist frei verfügbar (GPL) + teilweise objektorientierter,

Mehr

Vorbereitungsseminar für Abschlussarbeiten

Vorbereitungsseminar für Abschlussarbeiten Vorbereitungsseminar für Abschlussarbeiten Einführung in R Thomas Kneib SoSe 2012 1 Die statistische Software R Open Source Statistik-Software. Kompilierte Versionen für alle gängigen Betriebssysteme und

Mehr

Empirische Softwaretechnik. Einführung in das Statistikpaket R?! Entwickler von R. nicht vergleichbar mit den üblichen Statistikprogrammen

Empirische Softwaretechnik. Einführung in das Statistikpaket R?! Entwickler von R. nicht vergleichbar mit den üblichen Statistikprogrammen Empirische Softwaretechnik Einführung in das Statistikpaket Prof. Dr. Walter F. Tichy Dr. Frank Padberg Sommersemester 2007 1 2 R?! nicht vergleichbar mit den üblichen Statistikprogrammen wie SAS oder

Mehr

Gnuplot. Justin Simon Bayer. 12. Januar 2006

Gnuplot. Justin Simon Bayer. 12. Januar 2006 Gnuplot Justin Simon Bayer 12. Januar 2006 1 Inhaltsverzeichnis 1 Gnuplot? 3 1.1 Was ist das eigentlich?........................ 3 1.2 Ein Beispiel.............................. 3 1.3 Und noch eins.............................

Mehr

MySQL Queries on "Nmap Results"

MySQL Queries on Nmap Results MySQL Queries on "Nmap Results" SQL Abfragen auf Nmap Ergebnisse Ivan Bütler 31. August 2009 Wer den Portscanner "NMAP" häufig benutzt weiss, dass die Auswertung von grossen Scans mit vielen C- oder sogar

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1 Fachhochschule Kaiserslautern Fachbereiche Elektrotechnik/Informationstechnik und Maschinenbau Labor Datenbanken Versuch 1 : Die Grundlagen von MySQL ------------------------------------------------------------------------------------------------------------

Mehr

Relationale Datenbanken in der Praxis

Relationale Datenbanken in der Praxis Seite 1 Relationale Datenbanken in der Praxis Inhaltsverzeichnis 1 Datenbank-Design...2 1.1 Entwurf...2 1.2 Beschreibung der Realität...2 1.3 Enitiy-Relationship-Modell (ERM)...3 1.4 Schlüssel...4 1.5

Mehr

Kurze Einführung in IBM SPSS für Windows

Kurze Einführung in IBM SPSS für Windows Kurze Einführung in IBM SPSS für Windows SPSS Inc. Chicago (1968) SPSS GmbH Software München (1986) 1984: Datenanalyse Software für den PC 1992: Datenanalyse Software unter Windows 1993: Datenanalyse Software

Mehr

Access Grundlagen. David Singh

Access Grundlagen. David Singh Access Grundlagen David Singh Inhalt Access... 2 Access Datenbank erstellen... 2 Tabellenelemente... 2 Tabellen verbinden... 2 Bericht gestalten... 3 Abfragen... 3 Tabellen aktualisieren... 4 Allgemein...

Mehr

1 Einführung... 13. 2 Erste Schritte... 19. 3 Programmierkurs... 33. 4 Datentypen... 81. 5 Weiterführende Programmierung... 139

1 Einführung... 13. 2 Erste Schritte... 19. 3 Programmierkurs... 33. 4 Datentypen... 81. 5 Weiterführende Programmierung... 139 Auf einen Blick 1 Einführung... 13 2 Erste Schritte... 19 3 Programmierkurs... 33 4 Datentypen... 81 5 Weiterführende Programmierung... 139 6 Objektorientierte Programmierung... 191 7 Verschiedene Module...

Mehr

Einführung in das Programm R

Einführung in das Programm R Vienna University of Technology Einführung in das Programm R Peter Filzmoser Institut für Statistik und Wahrscheinlichkeitstheorie Technische Universität Wien P.Filzmoser@tuwien.ac.at http:// www. statistik.

Mehr

1. Einführung. 2. Vorbereitung zur Installation. 1.1 Eclipse

1. Einführung. 2. Vorbereitung zur Installation. 1.1 Eclipse 1. Einführung 1.1 Eclipse Die Eclipse ist eine kostenlose integrierte Entwicklungsumgebung oder auch IDE genannt, (Abkürzung IDE, engl. Integrated development enviroment). Sie ist eine grafische Benutzeroberfläche

Mehr

Formale Methoden der Ökonomik: Einführung in die empirische Wirtschaftsforschung

Formale Methoden der Ökonomik: Einführung in die empirische Wirtschaftsforschung Übung Formale Methoden der Ökonomik: Einführung in die empirische Wirtschaftsforschung BACHELOR FT 2013 (HSU) Übung Emp. WiFo FT 2013 1 / 17 Organisatorisches (HSU) Übung Emp. WiFo FT 2013 2 / 17 Organisatorisches

Mehr

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6 WS 2011/12 Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011 Prof. Dr. Bernhard Bauer Übungen zur Vorlesung Informatik II, Blatt 6 Abgabe: Montag, 05.12.2011, 12.00 Uhr, Informatik

Mehr

Carl-Engler-Schule Karlsruhe Datenbank 1 (5)

Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Informationen zur Datenbank 1. Definition 1.1 Datenbank-Basis Eine Datenbank-Basis ist eine Sammlung von Informationen über Objekte (z.b Musikstücke, Einwohner,

Mehr

MGE Datenanbindung in GeoMedia

MGE Datenanbindung in GeoMedia TIPPS & TRICKS MGE Datenanbindung in GeoMedia 10. September 2002 / AHU INTERGRAPH (Schweiz) AG Neumattstrasse 24, CH 8953 Dietikon Tel: 043 322 46 46 Fax: 043 322 46 10 HOTLINE: Telefon: 043 322 46 00

Mehr

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen V14 1 / 30 Informationsverarbeitung im Bauwesen Markus Uhlmann Institut für Hydromechanik WS 2009/2010 Bemerkung: Verweise auf zusätzliche Information zum Download erscheinen in dieser Farbe V14 2 / 30

Mehr

MySQL Installation. AnPr

MySQL Installation. AnPr Name Klasse Datum 1 Allgemeiner Aufbau Relationale Datenbank Management Systeme (RDBMS) werden im Regelfall als Service installiert. Der Zugriff kann über mehrere Kanäle durchgeführt werden, wobei im Regelfall

Mehr

Einführung in SPSS. 1. Die Datei Seegräser

Einführung in SPSS. 1. Die Datei Seegräser Einführung in SPSS 1. Die Datei Seegräser An 25 verschiedenen Probestellen wurde jeweils die Anzahl der Seegräser pro m 2 gezählt und das Vorhandensein von Seeigeln vermerkt. 2. Programmaufbau Die wichtigsten

Mehr

Statistische Software (R) Konstanten. Datentypen in R. Aufruf der Hilfeseiten zu grundlegende Operatoren und Funktionen: Paul Fink, M.Sc.

Statistische Software (R) Konstanten. Datentypen in R. Aufruf der Hilfeseiten zu grundlegende Operatoren und Funktionen: Paul Fink, M.Sc. Grundlegende Operatoren und Funktionen Statistische Software (R) Paul Fink, M.Sc. Institut für Statistik Ludwig-Maximilians-Universität München Vektoren,, Listen und Data Frames Aufruf der Hilfeseiten

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,

Mehr

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Datumsangaben, enthält mindestens Jahr, Monat, Tag Datenbanken mit SQL Informatik - Sprenger Häufig wird mit Tabellenkalkulationen gearbeitet, obwohl der Einsatz von Datenbanken sinnvoller ist. Tabellenkalkulationen wie Microsoft Excel oder LibreOffice

Mehr

Was ist R? Grundfunktionen in R Beispiele Zusammenfassung Literatur. Einführung in R. Michael Zwinkel

Was ist R? Grundfunktionen in R Beispiele Zusammenfassung Literatur. Einführung in R. Michael Zwinkel Einführung in R Michael Zwinkel Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg Betreuer: Julian Kunkel

Mehr

Das Beste aus zwei Welten

Das Beste aus zwei Welten : Das Beste aus zwei Welten Das Beste aus zwei Welten Aufruf von R Funktionen mit PROC IML KSFE 2012 08.03.2012 ist IT Dienstleister für Business Intelligence und Datenanalyse gibt es seit über 20 Jahren

Mehr

Tag 9: Datenstrukturen

Tag 9: Datenstrukturen Tag 9: Datenstrukturen A) Datenstrukturen B) Cell Arrays C) Anwendungsbeispiel: Stimulation in einem psychophysikalischen Experiment A) Datenstrukturen Wenn man komplizierte Datenmengen verwalten möchte,

Mehr

Datenbanken. Ein DBS besteht aus zwei Teilen:

Datenbanken. Ein DBS besteht aus zwei Teilen: Datenbanken Wikipedia gibt unter http://de.wikipedia.org/wiki/datenbank einen kompakten Einblick in die Welt der Datenbanken, Datenbanksysteme, Datenbankmanagementsysteme & Co: Ein Datenbanksystem (DBS)

Mehr

W-Rechnung und Statistik für Ingenieure Übung

W-Rechnung und Statistik für Ingenieure Übung W-Rechnung und Statistik für Ingenieure Übung Christoph Kustosz (kustosz@statistik.tu-dortmund.de) Mathematikgebäude Raum 715 Christoph Kustosz (kustosz@statistik.tu-dortmund.de) W-Rechnung und Statistik

Mehr

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien

Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien Vielen Dank an Dennis Riehle für die Bereitstellung dieser Folien 1.1 Definition Datenbank Ein Datenbanksystem (DBS) ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe eines DBS

Mehr

Einführung in R. Matthias Templ, Leonhard Seyfang. Oktober 2005

Einführung in R. Matthias Templ, Leonhard Seyfang. Oktober 2005 Einführung in R Matthias Templ, Leonhard Seyfang Oktober 2005 Ausblick 1. Was ist R? Warum ausgerechnet R? (eine kurze Werbung) 2. Installation von R 3. Informationsmaterial zu R 4. GUI s für R; R-Commander

Mehr

Smart-Grid-Tools Beschleunigen Sie die Erstellung von Bauteilen ZUSAMMENFASSUNG. IM WORKSHOP Tip #14. Die Herausforderung, große Bauteile zu erstellen

Smart-Grid-Tools Beschleunigen Sie die Erstellung von Bauteilen ZUSAMMENFASSUNG. IM WORKSHOP Tip #14. Die Herausforderung, große Bauteile zu erstellen IM WORKSHOP Tip #14 Smart-Grid-Tools Beschleunigen Sie die Erstellung von Bauteilen ZUSAMMENFASSUNG Mai 2007 Autor: Phil Loughhead Die Erstellung von Bauteilen ist ein fundamentaler Bestandteil des Design-

Mehr

2.3 Univariate Datenanalyse in R

2.3 Univariate Datenanalyse in R 2.3. UNIVARIATE DATENANALYSE IN R 47 2.3 Univariate Datenanalyse in R Wir wollen nun lernen, wie man in R Daten elementar analysiert. R bietet eine interaktive Umgebung, Befehlsmodus genannt, in der man

Mehr

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt.

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt. Python Installation 1 Vorbereitung Diese Anleitung ist für Windows ausgelegt. 1.1 Download Python kann online unter https://www.python.org/downloads/ heruntergeladen werden. Hinweis: Im CoderDojo verwenden

Mehr

Grundlagen der Informatik 2

Grundlagen der Informatik 2 Grundlagen der Informatik 2 Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Gliederung 1. Einführung

Mehr

FreeMat unter Windows & Linux

FreeMat unter Windows & Linux FreeMat unter Windows & Linux Version: 23.11.2008 Inhalt Einleitung:... 2 1. Allgemeine Informationen... 2 2. Installation... 2 FreeMat unter Windows x86/x64... 2 FreeMat unter Linux... 3 3. Arbeiten mit

Mehr

Installation weiterer Format-Arbeitsplätze für FORMAT Fertigteile Export Versandabwicklung (FT-Export genannt)

Installation weiterer Format-Arbeitsplätze für FORMAT Fertigteile Export Versandabwicklung (FT-Export genannt) Installation weiterer Format-Arbeitsplätze für FORMAT Fertigteile Export Versandabwicklung (FT-Export genannt) 1. Datensicherung Voraussetzung für das Einspielen der Installation ist eine rückspielbare,

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Kapitel 1. R als Taschenrechner. Vorlesung Programmieren in statistischer Software: R Sommersemester 2009. Einleitung, Grundlagen

Kapitel 1. R als Taschenrechner. Vorlesung Programmieren in statistischer Software: R Sommersemester 2009. Einleitung, Grundlagen Vorlesung Programmieren in statistischer Software: R Sommersemester 2009 Kapitel 1, Christian Foliengestaltung von Martin Dörr Inhalt dieses Abschnitts 1 2 1.3 Braun, John W., Murdoch, Duncan J. A first

Mehr

Optionale Umstellung der Intranet-Version von Perinorm auf wöchentliche Aktualisierung

Optionale Umstellung der Intranet-Version von Perinorm auf wöchentliche Aktualisierung Optionale Umstellung der Intranet-Version von Perinorm auf wöchentliche Aktualisierung Perinorm Online wurde im Dezember 2013 auf eine wöchentliche Aktualisierung umgestellt. Ab April 2014 können auch

Mehr

11./ 12. April 2006. Andrea Ossig andrea.ossig@web.de. Prof. Dr. Helmut Küchenhoff kuechenhoff@stat.uni-muenchen.de

11./ 12. April 2006. Andrea Ossig andrea.ossig@web.de. Prof. Dr. Helmut Küchenhoff kuechenhoff@stat.uni-muenchen.de Einführung in SPSS 11./ 12. April 2006 Andrea Ossig andrea.ossig@web.de Prof. Dr. Helmut Küchenhoff kuechenhoff@stat.uni-muenchen.de Monia Mahling monia.mahling@web.de 1 Vor /Nachteile von SPSS +/ intuitiv

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

R-Tutorial. R bietet zahlreiche Hilfe-Funktionen an. Informiere Dich über die Funktion log():

R-Tutorial. R bietet zahlreiche Hilfe-Funktionen an. Informiere Dich über die Funktion log(): Statistik für Bioinformatiker SoSe 2005 R-Tutorial Aufgabe 1: Hilfe. Logge Dich ein. Username und Passwort stehen auf dem Aufkleber am jeweiligen Bildschirm. Öffne eine Shell und starte R mit dem Befehl

Mehr

Einführung in R. 1 Literatur und Software 1

Einführung in R. 1 Literatur und Software 1 Einführung in R Björn Böttcher Raum: C 247, Willersbau Sprechstunde: nach Vereinbarung Web: http://www.math.tu-dresden.de/ boettch/ Email: bjoern.boettcher@tu-dresden.de Inhaltsverzeichnis 1 Literatur

Mehr

Informationszentrum Hochschule Karlsruhe. Anleitung Plotter

Informationszentrum Hochschule Karlsruhe. Anleitung Plotter Informationszentrum Hochschule Karlsruhe Anleitung Plotter Inhaltsverzeichnis 1 Einführung 3 1.1 Begriffe..................................... 3 1.1.1 Plotserver................................ 3 1.1.2

Mehr

Whitepaper. Produkt: combit Relationship Manager / address manager. FILESTREAM für Microsoft SQL Server aktivieren

Whitepaper. Produkt: combit Relationship Manager / address manager. FILESTREAM für Microsoft SQL Server aktivieren combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager / address manager FILESTREAM für Microsoft SQL Server aktivieren FILESTREAM für Microsoft SQL Server aktivieren

Mehr

Installation Anleitung für JTheseus und MS SQL Server 2000

Installation Anleitung für JTheseus und MS SQL Server 2000 Installation Anleitung für JTheseus und MS SQL Server 2000 Inhaltsverzeichnis 1 Installation der Datenbank 3 1.1 Erstellen der Datenbank 3 1.2 Tabellen und Minimal Daten einlesen 4 1.3 Benutzer JTheseus

Mehr

LAMP HowTo (Linux Apache MySQL PHP) Zugriff per SSH auf den Server. Servername: gyko.no-ip.info (Lokal: 192.168.2.10)

LAMP HowTo (Linux Apache MySQL PHP) Zugriff per SSH auf den Server. Servername: gyko.no-ip.info (Lokal: 192.168.2.10) LAMP HowTo (Linux Apache MySQL PHP) Zugriff per SSH auf den Server Servername: gyko.no-ip.info (Lokal: 192.168.2.10) Stand: 04-2014 Warum Zugriff auf einen Server per SSH? Zunächst einmal möchte ich, dass

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Erwin Grüner 10.11.2005

Erwin Grüner 10.11.2005 FB Psychologie Uni Marburg 10.11.2005 Themenübersicht in R Arithmetische Operator Wirkung + Addition - Subtraktion * Multiplikation / Division ˆ Exponentiation %/% Integerdivision %% Modulo Vergleichsoperatoren

Mehr

Workbooster File Exchanger Command Line Tool

Workbooster File Exchanger Command Line Tool Thema Technische Benutzerdokumentation - WBFileExchanger Workbooster File Exchanger Command Line Tool Letzte Anpassung 18. Januar 2014 Status / Version Finale Version - V 1.1 Summary Erstellung Diese technische

Mehr

Erweiterung Bilderstammdaten und bis zu fünf Artikelbilder

Erweiterung Bilderstammdaten und bis zu fünf Artikelbilder Erweiterung Bilderstammdaten und bis zu fünf Artikelbilder Mit Hilfe dieser Erweiterung können Sie bis zu vier zusätzliche Artikelbilder in den Stammdaten eines Artikels verwalten. Diese stehen Ihnen dann

Mehr

Kapitel 4 Export und Import

Kapitel 4 Export und Import Math Handbuch Kapitel 4 Export und Import Formeln mit anderen Anwendungen austauschen Dokumentationen zu LibreOffice unter http://de.libreoffice.org Copyright Dieses Dokument unterliegt dem Copyright 2010-2013.

Mehr

Fachbereich Informatik Praktikum 1

Fachbereich Informatik Praktikum 1 Hochschule Darmstadt DATA WAREHOUSE SS2015 Fachbereich Informatik Praktikum 1 Prof. Dr. S. Karczewski Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 14.April.2015 1. Kurzbeschreibung In diesem Praktikum geht

Mehr

Schnellübersichten. Access 2016 Fortgeschrittene Techniken für Datenbankentwickler

Schnellübersichten. Access 2016 Fortgeschrittene Techniken für Datenbankentwickler Schnellübersichten Access 2016 Fortgeschrittene Techniken für Datenbankentwickler 1 Abfragen mit Funktionen 2 2 Abfragen mit erweiterten Funktionen 3 3 Formular in der Entwurfsansicht erstellen 4 4 Eigenschaften

Mehr

Tabellenkalkulationen

Tabellenkalkulationen Tabellenkalkulationen Mehr Informatik, als man denkt! Lutz Hellmig, Institut für Informatik Universität Rostock Institut für Informatik Themenschwerpunkte 1. Historisches und Trendiges 2. Daten in Tabellenkalkulationen

Mehr

1 Mit geschätzt weltweit mehr als zwei Millionen Anwendern hat sich die Sprache R seit

1 Mit geschätzt weltweit mehr als zwei Millionen Anwendern hat sich die Sprache R seit R im Überblick In diesem Kapitel DieVorteilevonRentdecken Einige Programmierkonzepte kennenlernen, die für R charakteristisch sind 1 Mit geschätzt weltweit mehr als zwei Millionen Anwendern hat sich die

Mehr

WufooConnector Handbuch für Daylite 4

WufooConnector Handbuch für Daylite 4 WufooConnector Handbuch für Daylite 4 WufooConnector Handbuch für Daylite 4 1 Allgemeines 1.1 Das WufooConnector Plugin für Daylite 4 4 2 Einrichtung 2.1 2.2 2.3 Installation 6 Lizensierung 8 API Key einrichten

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

3 Kurzeinführung in Matlab

3 Kurzeinführung in Matlab 3 Kurzeinführung in Matlab Matlab ist ein sehr leistungsfähiges interaktives Programmpaket für numerische Berechnungen. Nutzen Sie dies parallel zu den Vorlesungen. Sie können damit persönlich erfahren,

Mehr

Die Analyse großer Datensätze mittels freier Datenbanksysteme Dr Dirk Meusel meusel@iat.uni-leipzig.de

Die Analyse großer Datensätze mittels freier Datenbanksysteme Dr Dirk Meusel meusel@iat.uni-leipzig.de Institut für Angewandte Trainingswissenschaft Leipzig ein Institut des Trägervereins IAT / FES des DOSB e.v. Die Analyse großer Datensätze mittels freier Datenbanksysteme Dr Dirk Meusel meusel@iat.uni-leipzig.de

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Das Handbuch zu KSystemLog. Nicolas Ternisien

Das Handbuch zu KSystemLog. Nicolas Ternisien Nicolas Ternisien 2 Inhaltsverzeichnis 1 KSystemLog verwenden 5 1.1 Einführung.......................................... 5 1.1.1 Was ist KSystemLog?................................ 5 1.1.2 Funktionen.....................................

Mehr

Skyfillers Hosted SharePoint. Kundenhandbuch

Skyfillers Hosted SharePoint. Kundenhandbuch Skyfillers Hosted SharePoint Kundenhandbuch Kundenhandbuch Inhalt Generell... 2 Online Zugang SharePoint Seite... 2 Benutzerpasswort ändern... 2 Zugriff & Einrichtung... 3 Windows... 3 SharePoint als

Mehr

Inhaltsverzeichnis. jetzt lerne ich

Inhaltsverzeichnis. jetzt lerne ich Inhaltsverzeichnis jetzt lerne ich Einführung 15 1 Erste Schritte 21 1.1 Datenbanken und Datenbank-Managementsysteme 21 1.2 Zugriff auf Datenbanken 22 1.3 Was der Großvater noch wusste... 22 1.4 Einordnung

Mehr

Tutorium zur Makroökonomik

Tutorium zur Makroökonomik Universität Ulm 89069 Ulm Germany Dipl. WiWi. Sabrina Böck Institut für Wirtschaftspolitik Fakultät für Mathematik und Wirtschaftswissenschaften Ludwig-Erhard-Stiftungsprofessur Tutorium zur Makroökonomik

Mehr

Informatik I. Informatik I. 6.1 Programme. 6.2 Programme schreiben. 6.3 Programme starten. 6.4 Programme entwickeln. 6.1 Programme.

Informatik I. Informatik I. 6.1 Programme. 6.2 Programme schreiben. 6.3 Programme starten. 6.4 Programme entwickeln. 6.1 Programme. Informatik I 05. November 2013 6. Python-, kommentieren, starten und entwickeln Informatik I 6. Python-, kommentieren, starten und entwickeln Bernhard Nebel Albert-Ludwigs-Universität Freiburg 05. November

Mehr

Export-/Importanleitung für Citavi und EndNote

Export-/Importanleitung für Citavi und EndNote Export-/Importanleitung für Citavi und EndNote 1. Export aus Datenbanken und Bibliothekskatalogen Literaturdatenbanken und Bibliothekskataloge bieten Ihnen in der Regel die Möglichkeit an, gefundene Aufsätze

Mehr

Datenbanken (WS 2015/2016)

Datenbanken (WS 2015/2016) Datenbanken (WS 2015/2016) Klaus Berberich (klaus.berberich@htwsaar.de) Wolfgang Braun (wolfgang.braun@htwsaar.de) 0. Organisatorisches Dozenten Klaus Berberich (klaus.berberich@htwsaar.de) Sprechstunde

Mehr

Anleitung. Handhabung des ftp-clients FileZilla. Copyright 2015 by BN Automation AG

Anleitung. Handhabung des ftp-clients FileZilla. Copyright 2015 by BN Automation AG Anleitung Handhabung des ftp-clients FileZilla Copyright 2015 by BN Automation AG Alle Rechte vorbehalten. Die Weitergabe und Vervielfältigung dieses Dokuments oder von Teilen davon ist gleich welcher

Mehr

DAS EINSTEIGERSEMINAR PHP 5.3 LERNEN ÜBEN ANWENDEN. Oliver Leiss Jasmin Schmidt. 3. Auflage

DAS EINSTEIGERSEMINAR PHP 5.3 LERNEN ÜBEN ANWENDEN. Oliver Leiss Jasmin Schmidt. 3. Auflage DAS EINSTEIGERSEMINAR PHP 5.3 Oliver Leiss Jasmin Schmidt 3. Auflage LERNEN ÜBEN ANWENDEN Vorwort... 13 Einleitung... 15 Was ist PHP?... 15 PHP gezielt einsetzen... 16 Neuerungen in PHP 5.3... 16 Der Umgang

Mehr

ROOT. Schaltungstechnik. Michael Ritzert michael.ritzert@ziti.uni-heidelberg.de Vorlesung Tools Heidelberg 06.12.2013

ROOT. Schaltungstechnik. Michael Ritzert michael.ritzert@ziti.uni-heidelberg.de Vorlesung Tools Heidelberg 06.12.2013 ROOT Schaltungstechnik und Simulation Michael Ritzert michael.ritzert@ziti.uni-heidelberg.de Vorlesung Tools Heidelberg 06.12.2013 ROOT DAS Allround-Tool der Teilchenphysiker Plotting, Datenspeicherung,

Mehr

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken.

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken. Vorlesungsteil SQL Grundlagen - 1 / 8 - SQL SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken. Auf einem Server (Rechner im Netz, der Dienste

Mehr

R-Akademie Kursangebot Juni 2012

R-Akademie Kursangebot Juni 2012 Kooperationspartner der R-Akademie Kursangebot Juni 2012 Was ist R? R ist eine Open Source Programmiersprache für statistische Datenanalyse und -visualisierung. Mittlerweile hat sich R, neben den kommerziellen

Mehr

PHP Kurs Online Kurs Analysten Programmierer Web PHP

PHP Kurs Online Kurs Analysten Programmierer Web PHP PHP Kurs Online Kurs Analysten Programmierer Web PHP Akademie Domani info@akademiedomani.de Allgemeines Programm des Kurses PHP Modul 1 - Einführung und Installation PHP-Umgebung Erste Lerneinheit Introduzione

Mehr

32.4 Anpassen von Menüs und Symbolleisten 795i

32.4 Anpassen von Menüs und Symbolleisten 795i 32.4 Anpassen von Menüs und Symbolleisten 795i Fortsetzung der Seiten in der 8. Auflage 32.4 Anpassen von Menüs und Symbolleisten 32.4.1 Anpassen von Menüs Die Menüs können um folgende Typen von Optionen

Mehr

Statistische Software P. Fink. Statistische Software (R) Wiederholungshausübung SoSe 2015

Statistische Software P. Fink. Statistische Software (R) Wiederholungshausübung SoSe 2015 Allgmeine Hinweise Die Hausübung umfasst 7 Aufgaben mit insgesamt 120 Punkten. Erstellen Sie eine R Skript-Datei mit Ihrer Matrikelnummer als Dateinamen. Diese Datei enthält Ihren vollständigen und mit

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

CSV-Import von Zählerständen im Energiesparkonto

CSV-Import von Zählerständen im Energiesparkonto CSV-Import von Zählerständen im Energiesparkonto (Stand: 20. März 2013) Inhalt 1. Einleitung... 2 2. Schritt für Schritt... 3 3. Für Spezialisten: die Zählerstände-CSV-Datei... 4 3.1. Allgemeiner Aufbau

Mehr

G-Info Lizenzmanager

G-Info Lizenzmanager G-Info Lizenzmanager Version 4.0.1001.0 Allgemein Der G-Info Lizenzmanager besteht im wesentlichen aus einem Dienst, um G-Info Modulen (G-Info Data, G-Info View etc.; im folgenden Klienten genannt) zentral

Mehr

Grafiken mit R. Mike Kühne 1 R-Kurs

Grafiken mit R. Mike Kühne 1 R-Kurs Grafiken mit R Mike Kühne 1 R-Kurs INHALTSVERZEICHNIS Inhaltsverzeichnis 1 Beispielgrafiken 3 1.1 Beispiel für einfache Grafiken.................. 3 1.2 Beispiel für komplexere Grafiken.................

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken Betriebliche Datenverarbeitung Wirtschaftswissenschaften AnleitungzurEinrichtungeinerODBC VerbindungzudenÜbungsdatenbanken 0.Voraussetzung Diese Anleitung beschreibt das Vorgehen für alle gängigen Windows

Mehr

XML und Datenbanken

<Trainingsinhalt> XML und Datenbanken XML und Datenbanken i training Inhaltsverzeichnis Vorwort 11 Kapitel 1 XML 13 1.1 Voraussetzungen für XML 14 1.2 Allgemeines 14 1.3 Migration von HTML zu XML 16 1.4 Argumente für XML

Mehr