################################################################################ ## Einführung in R ## Modul 1: Erste Schritte ################################################################################ ## copyfree, Oktober 2007 ################################################################################ ## Dr. Fränzi Korner-Nievergelt ## oikostat - Statistische Analysen und Beratung ## Ausserdorf 43 ## CH - 6218 Ettiswil ## Tel.: +41 (0) 41 980 49 22 ## fraenzi.korner@oikostat.ch ## www.oikostat.ch ################################################################################ ## Inhalt ################################################################################ ## 1. Installation von R ## 2. Arbeiten mit Editor und Console ## 3. Was heisst "objektorientiertes Programmieren" ## 4. Hilfe, Dokumentation ## 5. Daten erzeugen, speichern, einlesen ## 6. Daten ansprechen ## 7. Fehlende Werte ## 8. Packages installieren ## 1. Installation von R ################################################################################ ## R kann gratis von der Internetseite: www.r-project.org heruntergeladen werden. ## Die Internetseite hat Spiegel, die auf der ganzen Welt verteilt sind. ## Grosse Dokumente (z.B. das Programm R) sollte von einem Spiegel ("Mirror") in ## Ihrer Nähe heruntergeladen werden. Unter "CRAN" (=Comprehensive R Archive Network) ## können Sie den nächst gelegenen Spiegel auswählen. ## Für die Installation einfach das entsprechende .exe-File herunter laden und ausführen. ## 2. Arbeiten mit Editor und Console ################################################################################ ## Wenn Sie R starten, erscheint ein Fenster, die R-Console, worin Sie Berechnungen ausführen können. ## Tippen Sie z.B. einmal folgende Rechnungen in die R-Console und drücken Sie "enter": 4+56 3*3 sqrt(16) ## Die R-Console ist unser Arbeitsplatz, wir schreiben normalerweise nicht direkt auf den Tisch! ## Wir schreiben und speichern unsere Berechnungen mit einem Editor in ein Text-File. ## Unter dem Menu "Datei" können Sie mit "Neues Skript" ein leeres Text-File bereitstellen ## oder mit "Öffne Skript..." dieses Dokument (Modul1_Erste_Schritte.r) öffnen. ## Sie können mit der Tastenkombination "Ctrl + R", die Zeile, in der der Cursor steht, oder eine Markierung ## an die R-Console schicken. Die Zeile oder die Markierung wird dann automatisch ## ausgeführt. 24-5 # Setze den Kursor in diese Zeile und drücke "Ctrl + R" ## Zeichen, die hinter dem Raute-Zeichen (#) erscheinen, werden von R nicht interpretiert ## Nach dem Raute-Zeichen können Kommentare eingefügt werden. ## Kommentare sind sehr hilfreich, wenn Sie Ihre Berechnungen später wieder verstehen müssen. ## Der R-Editor bietet keine grafischen Programmierhilfen (z.B. Hervorheben der zugehörigen Klammern, ## Hervorheben von Funktionen, grafische Unterscheidung zwischen Text und Objekten). ## Es gibt freie und kommerzielle Editoren, die mit R korrespondieren können, z.B. ## Tinn-R ## emacs ## WinEdt ## 3. Objektorientiertes Programmieren ## Das heisst: Werte, Tabellen, Resultate, Listen können Zeichenfolgen zugeteilt werden ## und später wieder verwendet werden. ## Bsp. Grünfink: Führen Sie folgende Zeilen aus, indem Sie den Cursor in die 1. Zeile ## setzen und 6x hintereinander "Ctrl + R" drücken. (Sie erfahren dabei auch, ## wie der Cursor nach dem Ausführen eines Befehls wieder zurück in den R-Editor springt ## und sich auf der nächsten Zeile platziert.) nm<-12 # Anzahl Männchen, z.B. Grünfink nm nw<-14 # Anzahl Weibchen nw ntot<-nm+nw # Anzahl Total ntot # Die Addition kann auch als Funktion geschrieben werden: sum(nm, nw) # funktion(argumente) ## Führne Sie den Beispielscode in diesem Dokument immer so aus, indem Sie ## Ctrl + R drücken, um eine Zeile oder eine Markierung an die R-Console zu schicken! ## 4. Hilfe und Dokumentation ################################################################################ ?boxplot # Help-files zu spezifischen Codes help.start() # öffnet ein html-Handbuch, das einen Suchapparat enthält, ## worin Funktionen nach Schlüsselwörtern gesucht werden können. ## Das Dokument enthält nur Informationen über die momentan auf Ihrem Computer ## installierten Packages. Weitere Packages können von CRAN herunter geladen werden (Anleitung in Kapitel 8). ## Weitere Dokumentation findet man auf CRAN. ## Natürlich stehen auch einige sehr gute Bücher zum Nachschlagen zur Verfügung. ## siehe separate Literaturliste ## 5. Daten erzeugen, speichern und einlesen ################################################################################ ## Die nächsten 3 Zeilen erzeugen zwei Vektoren mit (zufälligen) Zahlen, für die ## wir z.B. so tun als wären es Flügellängen von Grünfinken für Männchen und Weibchen. set.seed(2353) # Zufallszahlengenerator einstellen, damit später wieder die gleichen Zufallszahlen generiert werden. fluegelm<-round(rnorm(nm, mean=77.8, sd=1.35), digits=1) # rnorm() produziert normalverteilte Zufallszahlen, round() rundet die Zahl auf die gewünschte Anzahl Stellen nach dem Komma. fluegelw<-round(rnorm(nw, mean=74.6, sd=1.74), digits=1) # Angabe von Mittelwert und Standardabweichung aus Cramp (1994) fluegelm # so können wir die erzeugten Zahlenvektoren anschauen. fluegelw # Die Vektoren zu einem Datenfile zusammenstellen dat<-data.frame(sex=c(rep("M", nm), rep("W", nw)), fluegel=c(fluegelm, fluegelw)) # c() fügt Zahlen oder Vektoren zusammen ("concatenate", oder "combine") # rep() repetiert ein Argument, z.B. der Buchstabe "M", eine gewünschte Anzahl, z.B. nm=12, Mal. dat # wir betrachten das Objekt, das wir soeben erzeugt haben. ## Grosse Datenfiles sind mühsam anzuschauen. Deshalb benutzen wir head(dat) # die ersten Zeilen eines Datenfiles betrachten str(dat) # die Struktur eines Datenfiles betrachten ## Als "Factor" werden nominale (kategorielle) Variabeln bezeichnet, z.B. Farbe oder Geschlecht. ## Wenn R ein nominaler Faktor nicht als Faktor erkennt, weil seine Stufen mit Zahlen ## codiert sind, dann muss man den Faktor von Hand definieren: xnum<-sample(c(1:5), 20, replace=TRUE) # Ein Vektor mit der Länge 20, der an jeder Stelle zufällig eine Zahl zwischen 1 und 5 enthält, wird erzeugt. xnum # R "erkennt" den Vektor als eine Folge von Zahlen xfactor<-factor(xnum) # Aus der Zahlenfolge wird ein Faktor mit verschiedenen Stufen gemacht. xfactor # R erkennt jetzt 5 Kategorien. ## Datenfile abspeichern write.table(dat, file="c:/simdat.txt", row.names=FALSE) # Das Argument file enthält den Pfad und den Namen des Datenfiles. # Windows blockiert machmanl das Speichern von Dateien direkt auf der Harddisk ("c:/"). # Geben Sie einfach einen Pfad zu Ihrem Ordner an, z.B. "c:/Dokumente und Einstellungen/Administrator/Desktop/simdat.txt". # Im Argument row.names=FALSE geben Sie an, ob in einer zusätzlichen ersten Spalte Zeilennummern gespeichert werden sollen. Es empfielt sich, dieses Argument auf FALSE zu stellen. ## Zwischendurch können wir unseren Schreibtisch (R-Console) betrachten. ls() # list objects: Alle bisher erstellten Objekte sind vorhanden rm("dat") # remove: Das Datenfile "dat" wird entfernt (aufräumen). Das sollten Sie nur machen, wenn die Funktion write.table geklappt hat, denn sonst ist das Datenfile dat vollständig gelöscht. ls() # Das Datenfile ist nicht mehr vorhanden dat # Das Datenfile wird nicht gefunden ## PS: Beim Schliessen einer R-Sitzung fragt R ob die Console gespeichert werden soll. ## Dies sollte im Normalfall VERNEINT (!) werden! damit der Schreibtisch beim nächsten Start wieder sauber ist. ## Hingegen sollten Sie unbedingt das Text-File mit Ihren Berechnungen speichern! # Datenfile einlesen dat<-read.table("c:/simdat.txt", header=TRUE) # geben Sie den bei write.table eingegebenen Pfadname ein! # Das Argument header=TRUE sagt dem R, dass im Datenfile die erste Zeile die Spaltenüberschriften enthält. dat # nun ist das dat wieder auf dem Schreibtisch vorhanden. ## Daten aus dem Excel oder einer Datenbank müssen als txt-File abgespeichert werden. ## Sie dürfen keine leeren Zellen enthalten (leere Zellen mit "NA" füllen) ## Die Überschriften dürfen keine Leerfelder enthalten, die Zahl der überschriften muss der Zahl der Spalten entsprechen ## 6. Daten ansprechen ################################################################################ # In ein bestehendes Datenfile können einfach neue Variabeln hinzugefügt werden. dat$ID<-c(1:26) # Identifikationsvariable einfügen dat$sex[10] # Ansprechen der 10. Beobachtung aus der Variable sex im Datenfile dat dat[10,1] # Ansprechen der 10. in der 2. Spalte von dat dat[10,] # Ansprechen der 10. Zeile im Datenfile dat dat[,2] # Zweite Spalte im Datenfile dat dat$fluegel # dito dat$fluegel[dat$sex=="W"] # Flügellängen der Weibchen # Folgende Operatoren erzeugen logische Werte: == (ist gleich), != (ist nicht gleich), >=, >, <=, < ## 7. Fehlende Werte ################################################################################ ## Fehlende Werte werden in R mit NA (ohne Anführungszeichen!) bezeichnet. # Arbeiten mit fehlenden Werten dat$fluegel[10]<-NA # der 10. Wert der Flügellänge wird NA gesetzt mean(dat$fluegel) # die meisten Funktionen liefern NA oder Warnungen, wenn die Daten NA's enthalten mean(dat$fluegel, na.rm=TRUE) # Die NA' müssen aktiv entfernt werden (ist zwar mühsam, dient aber der eigenen Sicherheit!)$ # manchmal ist es einfacher, Beobachtungen mit NA's aus dem Datenfile zu entfernen is.na(dat$fluegel) # zeigt an, wo NA's vorkommen !is.na(dat$fluegel) # das Ausrufezeichen vor einem logischen Wert kehrt diesen um datcompl<-dat[!is.na(dat$fluegel),] # liefert ein Datenfile, das in der Variable fluegel keine NA's enthält datcompl<-dat[complete.cases(cbind(dat$sex, dat$Alter, dat$fluegel)),] # liefert ein Datenfile, das in keiner der Variabeln sex, Alter und fluegel NA's enthält ## 8. Packages installieren und laden ################################################################################ # Es gibt einige Befehle, die Sie in help.start() finden, die R jedoch nicht erkennt. # Sie befinden sich in einer Bibliothek, die R nicht per Default lädt. # z.B ?lme # da das Packet "nlme" nicht per Default geladen wirde, erkennt R den Befehl lme (linear mixed effects model) nicht. library(nlme) # die library nlme laden ?lme # nun steht die Funktion lme zur Verfügung # Bei der Installation von R werden nur die häufigsten Packete installiert. # Auf dem Internet stehen über 1000 spezielle Packete zur Verfügung. # sie können einfach installiert werden: install.packages("circular") # Das Package für Kreisstatistik wird von Internet heruntergeladen und auf Ihrem Computer installiert. # Das Packet kann nun geladen werden. library(circular) ## Zum Schluss: ## Denken Sie daran: Speichern Sie das Textfile im Editor, ## und drücken Sie "NICHT SPEICHERN" beim Schliessen der R-Console! ## Dank ################################################################################ ## Dieses Dokument entstand für einen Einführungskurs in R an der DO-G-Tagung ## vom 29. September - 3. Oktober 2007 in Giessen ## Folgenden Personen danke ich herzlich für die Unterstützung und die Werbung: ## Dr. Ommo Hüppop, Dr. Heiko Schmaljohann, Dr. Wolfgang Fiedler, ## Dr. Thomas Gottschalk, Holger Schielzeth, Dr. Roger Mundry und Dr. Boris Schröder