####################################### ####################################### ### 0. Einführung ####################################### ####################################### #* Ablauf des Tutoriums #* Warum benutzen wir R? #* Allgemeine Fragen ####################################### ####################################### ### 1. Die Sprache "R" ####################################### ####################################### ### ### R als Taschenrechner benutzen ### 3 + 103 6 - 3 50 / 2 # Achtung: 50:2 macht etwas anderes! 20 * 1.5 # R kennt als Trennzeichen von Dezimalzahlen nur den Punkt 3^2 # 3 hoch 2 bzw. 3 zum Quadrat 4*(3+5) # Die Klammern machen hier einen Unterschied. ###### Wie bekommt man die Zahlen in die Konsole? ########################## # 1.markieren, dann rechte Maustaste, "Ausführung Zeile oder Auswahl" # oder #2. markieren und dann Strg+ "r" drücken. (oder Ctrl + "r") ############################################################################ ### ### Zuweisung ### a<-10 # weist a den Wert 10 zu "<-" sorgt für die Zuweisung # man deklariert sozusagen eine Variable "a" mit Wert 10 a # gibt den Wert von a aus 3 * a 10* b # ups ein Fehler. Warum ? R kennt b noch nicht. Wir haben b noch keinen Wert # zugewiesen b<- 4 b # R arbeitet mit Vektoren. #### c() bedeutet für R, dass nun mehrere Zahlen kommen, die in einem Vektor gespeichert werden. vektor1 <- c(1, 4, 5, 10, 56, 103) vektor1 length(vektor1) # Wie viele Elemente sind in vektor1 gespeichert? #### length() ist ein Befehl bzw. eine Funktion. #### Auf Groß- und Kleinschreibung achten! # Rechnungen werden Komponentenweise durchgeführt 3*vektor1 vektor1 + 5 # einmalige Addition, es wird nichts gespeichert vektor1 vektor2 <- 1:6 # a:b erstellt eine Folge von ganzen Zahlen von a bis b vektor2 vektor1 + vektor2 vektor3 <- 20:30 vektor3 # Wichtig: Auf einzelne Elemente zugreifen vektor4 <- c("Stelle 1", "Stelle 2", "Stelle 3", "blub") vektor4[2] # Um einzelne Elemente rauszugreifen, werden eckige Klammern benutzt vektor4[c(1,3)] vektor4[1:3] vektor4[-2] # Alle Elemente außer das an zweiter Stelle ######## Logische Abfragen # Logische Abfragen können wahr (TRUE) oder falsch (FALSE) sein 3 < 5 10 < 4 3 == 7 # man beachte das doppelte "=" 7 == 7 # Auf einzelne Elemente mit Hilfe logischer Abfragen zugreifen: vektor3 vektor3 < 25 vektor3[vektor3<25] # alternativ ">", "<=", ">=" oder "==" # wählt alle Elemente aus vektor3 aus die kleiner als 25 sind vektor5 <- c( rep(1,3), rep(2,8) ) # rep(a,b) erstellt einen Vektor, der b mal den Eintrag "a" enthält vektor5 vektor5 == 2 vektor3 vektor3[ vektor5==2 ] # R verlangt für logische Abfragen auf Gleicheit immer zwei Gleichzeichen! vektor3[vektor3<28 & vektor3>2] # mit "&" kann man zwei Abfragen kombinieren vektor3[vektor3==24 | vektor3>24] # "|" = or ### ### Matrizen ### # # ähnlich wie Vektoren data<-matrix(c(3,4,7,9),2,2) # matrix(a,b,c) erzeugt eine Matrix mit den # Daten a, b Zeilen und c Spalten data dim(data) # Dimension der Matrix data[1,] # Gibt die erste Zeile aus data[,2] # Gibt die Zweite Spalte aus data[1,2] # Gibt in der ersten Zeile das zweite Element aus. # Wichtig Matrizen haben zwei Koordinaten - deswegen das Komma in [] ### ### Wichtige Funktionen ### #neben den Standardfunktionen wie sin, cos, tan, log, exp, usw sin (0) exp(1) # kennt R noch viele weitere. Wir wollen an dieser Stelle ein paar wichtige aufzählen: vektor6<-c(1,3,6,12,2,26,3,67,2) mean(vektor6) # berechnet den (Stichproben-) Mittelwert median(vektor6) # berechnet den Median. sort(vektor6) # sortiert den Vektor nach der Größe der Elemente sum(vektor6) # summiert die einzelnen Werte auf var(vektor6) # berechnet die Varianz sd(vektor6) # Standardabweichung # usw usw. # Es gibt Funktionen für alles mögliche. Man muss sie nur kennen oder # wissen in welchem Zusatzpaket sie zu finden sind ;-) # Doch vieles kann man sich auch selber basteln: # zum Beispiel hätten wir um den Mittelwert zu bestimmen auch folgendes machen können: sum(vektor6)/length(vektor6) # Summe der Werte/Anzahl mean(vektor6) ######################################################### ### Grafische Darstellungen ######################################################### ### Unsere Beispieldaten: werte<-rnorm(100,25,4) ##Erstellt einen Vektor mit 100 normalverteilten Zahlen mit Mittelwert 25 und Standardabweichung 4 range(werte) ## Wie groß sind die kleinste und größte Zahl? #Histogramm hist(werte) ?hist # Startet die Hilfe # Alle grafikerzeugenden Funktionen haben jede Menge zusätzliche Befehle: # main Titel der Grafik # xlab x-Achse Beschriftung # ylab y-Achse Beschriftung # col Farbe für die Balken # um mal ein paar zu nennen # # im Falle des Histogramms gibt es zB noch folgenden speziellen Befehl # breaks ein Vektor der die Einteilung in Klassen repräsentiert # (von wo bis wo gehen die Balken) ## schönere Darstellung hist(werte, col="yellow", main="Histogramm unserer Daten", ylab="abs. Häufigkeit", xlab="Werte", breaks=seq(10,40,1)) # Ein wichtiger Befehl ist text(x,y,text,..) # er erlaubt Texte in die Grafik einzubinden. # x und y geben die Koordinaten an wo der Text erscheint. # Man orientiert sich dabei an der Achsenskalierung. # Im Anschluss an die Koordinaten erfolgt der Text und mit ... # sind weitere Parameter gemeint. text(15,7,"Ein roter Text",col="red") # Wichtig ist der paste() Befehl ! # Mit ihm kann man Text und Werte von Variablen kombinieren. # Damit man nicht zu viele Zahlen hat empfiehlt sich das ganze zu runden, mittels round() # Wobei man mit dem befehl digits=k angeben kann, dass auf k Nachkommastellen gerundet werden soll varianz<-var(werte) text(15,6,paste("Varianz:",round(varianz,digits=4)),col="blue") ### ### Zusätzliche Grafik Befehle ### windows(height=6,width=8) # Öffnet ein neues leeres Gafikfenster # in diesem Fall 8 inch breit und 6 inch hoch # NUR für WINDOWS Systeme geeigent # Mac User benutzen quartz(height=...,width=...) # par() # mit diesem Befehl lassen sich permanente Änderungen durchführen # er kann zb folgende Befehle enthalten: # cex.lab=2 = ändert die Beschriftungsgröße der Achsen (1 ist der Standardwert) # cex.axis=1.5 = ändert die Größe der Achsenbeschriftung (das eine bezieht sich # auf die werte, das andere auf die Texte # cex.main=1.8 = ändert Schriftgröße des Titels # mar=c(4,5,3,0) = ändert die Randeinstellungen. c(x1,x2,x3,x4) # x1 unten, x2 links, x3 oben, x4 rechts # mfcol=c(1,2) wieviel Grafiken in einem Bild c(x,y) # x zeilen y Spalten temp<-par() #speichere aktuelle par Einstellung par(mfcol=c(1,2)) werte2<-rnorm(10000) # wir generieren und neue Daten, diesmal 100000 Einzelergebnisse hist(werte2,main="Ein neues Histogramm",xlab="Werte", ylab="rel. Haefigkeit",col="yellow", breaks=seq(-4.5,4.5,0.5)) par(cex.lab=2,cex.axis=1.5,cex.main=1.8,font.main=1,mar=c(4,5,3,0)) hist(werte2,main="Ein neues Histogramm",xlab="Werte", ylab="rel. Haefigkeit",col="yellow", breaks=seq(-4.5,4.5,0.5)) par(temp) # setzt die Einstellungen zurück. Alternativ kann man R schließen und wieder neu öffnen ## Boxplot boxplot(werte) boxplot(werte, col="green4", main="Boxplot unserer Daten") ### die Hilfe aufrufen ?boxplot ### Ganz unten findet man immer einige Beispiele: # Die ganzen Befehle müssen nicht verstanden werden, sondern sollen nur einen Überblick geben, was mit R möglich ist. boxplot(len ~ dose, data = ToothGrowth, boxwex = 0.25, at = 1:3 - 0.2, subset = supp == "VC", col = "yellow", main = "Guinea Pigs' Tooth Growth", xlab = "Vitamin C dose mg", ylab = "tooth length", xlim = c(0.5, 3.5), ylim = c(0, 35), yaxs = "i") boxplot(len ~ dose, data = ToothGrowth, add = TRUE, boxwex = 0.25, at = 1:3 + 0.2, subset = supp == "OJ", col = "orange") legend(2, 9, c("Ascorbic acid", "Orange juice"), fill = c("yellow", "orange")) ################### # Ein paar Beispiele von Grafiken die man mit R erzeugen kann. # (folgenden Befehl ausführen, enter bzw. maustaste drücken und Grafiken anschauen) demo(graphics) # Beispiele von Grafiken ### ### Grafiken speichern ### # Entweder mittels, "Datei" "Speichern als".... (nach Möglichkeit als pdf) # oder dev.print(device=pdf,file="dateiname.pdf") # die Dateien werden ins aktuelle Arbeitsverzeichniss abgelegt. # dieses ist in der Regel der R Installationsordner ### ### Beispiel ### # Wie man mit R arbeitet: # 1. Daten bearbeiten # 2. Arbeitsverzeichnis festlegen setwd("F:/Uni/Umweltwissenschaften/Woche1/") # 3. Daten einlesen daten<-read.table("Tut.txt",header=TRUE) daten ### Bei den Daten handelt es sich um Aufzeichnungen aus einem Tutorium. ### Tafel steht für Vorrechnen an der Tafel ### A1 bis A7 sind die erreichten Punkte bei den Übungszetteln A1 attach(daten) A1 #Nach dem attach() Befehl können alle Spaltenbezeichnungen benutzt werden. # 4. Analyse # Man könnte folgende Fragen stellen: # - Was ist die durchschnittliche Anazhl von Punkten bei Aufgabenblatt 4 ? mean(A4) # Fehler A4 # A4 hat fehlende Werte ! ?mean mean(A4,na.rm=T) # - Wieviel Punkte hat der 2. Student bei Aufgabenblatt 3 ? A3[2] # - Wie ist die Verteilung der Punkte von Aufgabenblatt 2 ? hist(A2,col="yellow",main="Aufgabenblatt 2",ylab="Anzahl",xlab="Punkte",xlim=c(0,4)) # Grafik abspeichern: dev.print(dev=pdf,"histA2.pdf") # - Wie viele Studenten haben im Aufgabenblatt 5 mehr als 3 Punkte length(A5[A5>3]) # usw.