Kommentar

# Ich bin ein Kommentar

Ausgabe

• print(“Hello World”) • cat(“Hello”, “World”)

Information über R-Befehle

# Informationen über einen bestimmten Befehlt z.B. ‘which’ ermitteln • apropos(“which”) • help(which) • ?which • RSiteSearch(“which”)

Befehl-Historie & Exit

# Zuvor eingegebene Befehle anzeigen history()

# RStudio Verlassen q()

Arbeitsverzeichnis

# Mein R Arbeitsverzeichnis anzeigen getwd()

# Arbeitsverzeichnis ändern

# Ein neues Arbeitsverzeichnis angeben

setwd(‘PFAD’)

R-Befehle/Script Speichern

# R-Befehle bzw. R-Scribt lokal speichern save (myTable, file=“C:/Users/axxKreis/Desktop/myTable.RData”)

R-Befehle/Script laden

# Persistierte Ergebnisse laden load (file=“C:/Users/axxKreis/Desktop/myTable.RData”)

CSV-Datei laden

# Eine Tabelle (CSV-Datei) laden myCsvTable <- read.table(file=“C:/[PFAD]/myCsvTable.csv”, header=TRUE, sep=";") oder myCsvTable <- read.csv(file=“C:/[PFAD]/myCsvTable.csv”, header=TRUE, sep=";")

Bibliotheken

Informationen über vorhandene Bibliothelen

# Gibt an, wo die Bibiotheken installiert sind .libPaths()

# Die installierten basis Pakete anzeigen lassen getOption(“defaultPackages”)

# Die Liste alle Pakete, die aktuell geladen wurden (.packages())

# Alle Pakete, die bereits installiert wurden und zur Verfügung stehen (.packages(all.available=TRUE)) oder library() # Für detaillierte Informationen oder installed.packages()

# Ort, an der sich die installierten Pakete bzw. libs befinden Sys.getenv(“R_LIBS_USER”)

Bibliothek laden

# Existierende Bibliothek z.B. rpart laden library(rpart)

Bibliothek installieren

install.packages(c(“tree”,“maptree”)) install.packages(“Name der Bibiothek”, dependencies=TRUE)

Öffentliche Liste von R Bibliotheken

https://cran.r-project.org/web/packages/available_packages_by_date.html

Installierte Pakete updaten

update.packages()

Bibliotheken beim Start von R-Studio laden

# Mit einem Texteditor im Admin-Modus die folgende Datei anpassen: C:\Program Files\R\R-3.2.4\etc\Rprofile.site # Innerhalb der Datei die gewünschten Bibliotheken eintragen library(DBI) library(FSelector) library(ggplot2) library(lattice) library(RODBC) library(RMySQL) library(lattice)

Datenbank Bibliotheken installieren und laden

RODBC entspricht ODBC DBI entspricht  JDB RMySQL entspricht  MySQL

# DB Packages installieren install.packages(“RODBC”) install.packages(“DBI”) install.packages(“RMySQL”) # MySQL

# Installiertes Paket laden library(RODBC) # Im Fehlerfall wird eine Meldung angezeigt. Ansonsten keine Ausgabe. library(DBI) library(RMySQL)

Bibliothek für Datenverarbeitung

install.packages(“FSelector”)

Bestimmung der Entropy für ’target value’

entropy (entropyTargetValue)

Information Gain

information.gain(data)

# ‘Information Gain’ für das Attribut ‘xxx’ in Bezug auf das ’target value’ bestimmen information.gain (head(data[c(“TARGET.VALUE”,“xxx”)],length(data$TARGET.VALUE)))

Bibliothek für Visiualisierungs

# Visualisierungspakete • lattice # Muss installiert und geladen werden • ggplot2

Datentypen

# Am meisten verwendeten Datentypen

  • Vectors
    • Logical
    • Numeric
    • Integer
    • Complex (1+2x)
    • Character
    • Raw (Hexadezimal)
  • Lists
  • Matrices
  • Arrays
  • Factors

Variablen (Symbol)

Deklaration

a <- 1 oder a = 1

# Funktionale Schreibweise ‘<-’(a,1)

Alle Variablen anzeigen

ls()

# Alle Variablen, die zum Pattern passen anzeigen ls(pattern = “var”)

# Alle Variablen inkl. die versteckten Dateien anzeigen ls (all.names = TRUE)

Variable/n ‘a’ löschen

rm(a)

# Alle Variablen löschen rm(list = ls())

Variablen miteinander vergleichen

a = 1 b = 2 a==b # FALSE

Operatoren

Arithmetische Operatoren

- + * / %% %/% ^

Relationale Operatoren

> < == <= >= !=

Logische Operatoren

& | ! && ||

Zuweisungsoperatoren

<− (lokal) = «− (global) -> -»

Sonstige Operatoren

: %in% %*%

Bespiele

# Module (%%)

a = c(4, 8, 12) b = c(12, 8, 4) a%%b

Ergebnis: 4 0 0

# Wie oft passen die Werte aus Vektor ‘a’ in Vector ‘b’

a = c(4, 8, 12) b = c(12, 8, 4) a%/%b

Ergebnis: 0 1 3 # Vektor ‘a’ um die Zahlen in Vektor ‘b’ exponieren z.B. 2*2*2=8; 3*3=9; 4*4=16 a = c(2, 3, 4) b = c(3, 2, 2) a^b

Ergebnis: 8 9 16

# Kontrollieren, ob die Werte von Vektor ‘a’ größer sind als die von Vektor ‘b’ a = c(4, 8, 12) b = c(12, 8, 4) a>b

Ergebnis: FALSE FALSE TRUE # Gibt true aus, falls die Werte von Vaktor ‘a’ und ‘b’ TRUE sein sollten a = c(2, TRUE, 4) b = c(3, FALSE, 2) a&b

Ergebnis: TRUE FALSE TRUE

# Gibt TRUE aus, falls ein Wert eines Vektors TRUE sein sollte z.B. 0 und 0 = FALSE oder FALSE und FALSE = FALSE a = c(3,0,TRUE,FALSE, 0) b = c(4,0,FALSE,FALSE, 0.1) a|b

Ergebnis: TRUE FALSE TRUE FALSE TRUE

# Beinhaltet ein Vektor einen bestimmten Wert a = c(3,0,TRUE,FALSE, 0) 3%in%a

Ergebnis: TRUE String

String

# einfache Anführungsstriche werden intern in doppelte umgewandelt ‘hello’ “Hello”

Länger einer Zeichenkette ermitteln

nchar(a)

Substring

a=“abcdefg” substr(a,3,5)

Ergebnis: cde

String Verkettung

a <- “Hello” b <- ‘How’ c <- “are you?”

paste(a,b,c) “Hello How are you?”

paste(a,b,c, sep = “@”) “Hello@How@are you?”

paste(a,b,c, sep = “”, collapse = “”) “HelloHoware you? "

5 Stelligen String erzeugen

format(18, width = 5) [1] " 18”

Ausrichtung der Ausgabe

format(“Hello”, width = 8, justify = “centre”) #left, right, centre, none " Hello "

String groß und klein schreiben

x = “Hello” toupper(x) tolower(x)

Faktor

v = c(“thomas”, “thomas”, “thomas”, “linda”)

levels(v) NULL

typeof(v) [1] “character”

class(v) [1] “character”

# Faktor Umwandlung & kontrollieren

v = factor(v)

is.factor(v) TRUE

levels(v) “linda” “thomas”

typeof(v) “integer”

class(v) “factor”

# Innerhalb von ‘data frame’ werden Strings in Faktoren umgewandelt a <- c(“Thomas”, “Linda”, “Felix”, “Sam”) b <- c(34,19,18,56) myDataFrame <- data.frame(a,b) is.factor(a) is.factor(myDataFrame$a)

Ergebnis: FALSE TRUE

# Reihenfolge der Faktoren bestimmen a <- factor( c(“Thomas”, “Linda”, “Felix”, “Sam”, “Linda”)

Ergebnis: Levels: Felix Linda Sam Thomas

# Reihenfolge ändern a <- factor( a, levels = c(“Linda”, “Sam”, “Thomas”, “Felix”) )

Ergebnis: Levels: Linda Sam Thomas Felix # Faktor generieren - 4 gibt an, wie oft ein Faktor vorkommen soll und 2 gibt an, wieviele der Faktor vorkommen sollen - In diesem Beispiel soll “Linda” und “Sam” jeweils 4x vorkommen. a <- gl(2, 4, labels = c(“Linda”, “Sam”, “Thomas”, “Felix”))

Ergebnis: Linda Linda Linda Linda Sam Sam Sam Sam Levels: Linda Sam Thomas Felix Vektor

# Vektor erstellen myVector <- c(1,2,c(3,4),5)

Ergebnis: 1 2 3 4 5 # Wenn ein Vektor ein String beinhaltet, werden alle non-string Werte in Strings umgewandelt c(‘hello’,0,TRUE)

Ergebnis: “hello” “0” “TRUE”

# Vektor Index auslesen days <- c(“mo”, “di”, “mi”, “do”, “fr”, “sa”, “so”) days[c(1,3)]

Ergebnis: “mo” “mi”

# Jeden zweiten Wert ausgeben days <- c(“mo”, “di”, “mi”, “do”, “fr”, “sa”, “so”) days[c(TRUE,FALSE)]

Ergebnis: “mo” “mi” “fr” “so”

# Einzelne Index entfernen days <- c(“mo”, “di”, “mi”, “do”, “fr”, “sa”, “so”) days[c(-2,-3)]

Ergebnis: “mo” “do” “fr” “sa” “so”

# Index Reihenfolge bestimmen days <- c(“mo”, “di”, “mi”, “do”, “fr”, “sa”, “so”) days[c(1,7,6,5,4,3,2)]

Ergebnis: “mo” “so” “sa” “fr” “do” “mi” “di”

# Operatoren auf zwei Vektoren anwenden +, -, *, /

# Ungleiche Länge wird wie folgt gerechnet: 1*1, 2*2, 3*3, 4*1, 5*2, 6*3 a = c(1, 2, 3) b = c(1, 2, 3, 4, 5, 6) a*b

Ergebnis: 1 4 9 4 10 18

# Vektor Sortierung (numerisch und Strings) a = c(1, 4, 9, 4, 10, 18) sort(a)

# Reihenfolge der Sortierung ändern sort(a, decreasing = TRUE)

# Länge ermitteln length (myVector)

# Sortieren sort(myVector)

# Duplikate erkennen duplicated (myVector)

# Vektor mit ganzen Zahlen zwischen 1 und 50 1:50

# Dritte Stelle eines Vektors auslesen a[3]

# Erste bis dritte Stelle des Vektors auslesen a[1:3]

# Vectoren zusammenfügen bzw. Tabelle bauen first.name <- c(“Hannes”, “Julia”) last.name <- c(“Müller”, “Schmidt”) myTable <- data.frame(first.name, last.name)

oder

x <- c(“a”, “b”) y <- c(“A”, “B”) paste(x,y) # Ergebnis: “a A” “b B” “a C”

oder

rbin (x, y)

oder

cbind (x,y)

Liste

# Eine Liste erstellen und den name ‘meineListe’ geben meineListe <- list(1, 2, c(3,4))

Ergebnis: [[1]] [1] 1

[[2]] [1] 2

[[3]] [1] 3 4

# Listen bzw. Elemente der Liste betitteln names(meineListe) <- c(“Element1”, “Element2”) # die ersten beideb Listen betitteln

Ergebnis: $Element1 [1] 1

$Element2 [1] 2

$ # Für das dritte Element wurde kein Titel vergeben [1] 3 4

# Die Namen der Listen explizit ausgeben names(meineListe)

# Zugriff auf die Listenelemente meineListe[1] oder meineListe$Element1

# Liste komplett überschreiben meineListe <- list(c(10, 20, 30), “Hello Liste”)

# Listenelement überschreiben meineListe[2] <- “Hello World!”

# Listen miteinander verknüpfen a = list(1,2,3) b = list(4,5,6) meineNeueListe = c(a,b)

# Liste in ein Vektor umwandeln unlist(meineNeueListe)

Ergebnis: [1] 1 2 3 4 5 6

Matrix

# Matrix erstellen (immer zweidimensional)

matrix( c(1,2,3,4,5,6), ncol = 3, nrow = 2, byrow = FALSE)

Ergebnis: [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6

oder

matrix( c(1,2,3,4,5,6), ncol = 3, nrow = 2, byrow = TRUE) Ergebnis: [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6

# Metrix mit vorgegbenem Zeilen- und Spaltenbezeichnung rownames = c(“row1”, “row2”, “row3”) colnames = c(“col1”, “col2”, “col3”, “col4”) myMatrix <- matrix(c(1:12), ncol = 4, nrow = 3, byrow = TRUE, dimnames = list(rownames, colnames))

Ergebnis: col1 col2 col3 col4 row1 1 2 3 4 row2 5 6 7 8 row3 9 10 11 12

# Die gesamte erste Zeile auslesen myMatrix[1,]

Ergebnis: col1 col2 col3 col4 1 2 3 4

# Die gesamte erste Spalte auslesen myMatrix[,1]

Ergebnis: row1 row2 row3 1 5 9

# Werte aus der ersten Zeile und der dritten Spalte auslesen. myMatrix[1,3]

# Matrix Addition (Weitere mathematische Operationen funktionieren auf die gleiche Weise) myMatrix1 [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6

myMatrix2 [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6

myMatrix1 + myMatrix2

Ergebnis: [,1] [,2] [,3] [1,] 2 4 6 [2,] 8 10 12

Array

# Array (n- bzw. mehrdimensinal) array(“a”, dim = c(3,4,2) )

Ergebnis: , , 1

[,1] [,2] [,3] [,4] [1,] “a” “a” “a” “a” [2,] “a” “a” “a” “a” [3,] “a” “a” “a” “a”

, , 2

[,1] [,2] [,3] [,4] [1,] “a” “a” “a” “a” [2,] “a” “a” “a” “a” [3,] “a” “a” “a” “a”

# Multidimensionaler Vektor a <- array(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), dim=c(3, 4))

oder

a <- c(1,2,3,4) b <- c(5,6,7,8,9,10,11,12) rownames = c(“row1”, “row2”, “row3”) colnames = c(“col1”, “col2”, “col3”, “col4”) myArray <- array( c(a,b), dim = c(3,4,2), dimnames = list(rownames, colnames) )

Ergebnis: , , 1

col1 col2 col3 col4 row1 1 4 7 10 row2 2 5 8 11 row3 3 6 9 12

, , 2

col1 col2 col3 col4 row1 1 4 7 10 row2 2 5 8 11 row3 3 6 9 12

# Ausgabe: Zeile 1, Spalte 3 und Dimension 2 myArray[1,3,2]

Ergebnis: 7

# Ausgabe der gesamten zweiten Dimension: myArray[,,2]

# Array der zweiten Dimension überschreiben a <- c(13,14,15,16) b <- c(17,18,19,20,21,22,23,24) rownames = c(“row1”, “row2”, “row3”) colnames = c(“col1”, “col2”, “col3”, “col4”) myArray[,,2] <- array( c(a,b), dim = c(3,4), dimnames = list(rownames, colnames) )

# Matrix Berechnung vornehmen bzw. eine Funktion anwenden z.B. die Summe der Zeilen aller Dimensionen bilden d.h. die Summe der ersten Zeile der ersten Dimension + die Summe der ersten Zeile der zweiten Dimension usw. apply(myArray, c(1), sum) # Zeile = 1; Spalte = 2; Zeile & Spalte = c(1,2)

Ergebnis: row1 row2 row3 92 100 108

Data Frame

# Data Frame - Die Werte einer Spalte müssen vom gleichen Type und Länge sein myDataFrame <- data.frame ( name = c(“Thomas”, “Johan”, “Linda”), alter = c(34, 21, 49), geschlecht = c(“M”, “M”, “W”), stringsAsFactors = FALSE )

Ergebnis: name alter geschlecht 1 Thomas 34 M 2 Johan 21 M 3 Linda 49 W

# Die Struktur der data.frame anzeigen lassen str(myDataFrame)

Ergebnis: ‘data.frame’: 3 obs. of 3 variables: $ name : Factor w/ 3 levels “Johan”,“Linda”,..: 3 1 2 $ alter : num 34 21 49 $ geschlecht: Factor w/ 2 levels “M”,“W”: 1 1 2

# Spalten Werte auswerten summary(myDataFrame)

Ergebnis: name alter geschlecht Length:3 Min. :21.00 Length:3 Class :character 1st Qu.:27.50 Class :character Mode :character Median :34.00 Mode :character Mean :34.67 3rd Qu.:41.50 Max. :49.00

# Spalte auslesen data.frame(myDataFrame$name)

Ergebnis: myDataFrame.name 1 Thomas 2 Johan 3 Linda

# Die ersten beiden Spalten anzeigen lassen - index fängt bei 0 an myDataFrame[0:1,]

Ergebnis: name alter geschlecht 1 Thomas 34 M

# Spalte 1 & 3 auslesen - index fängt bei 1 an myDataFrame[c(1,3)]

Ergebnis: name geschlecht 1 Thomas M 2 Johan M 3 Linda W

# Neue Spalte hinzufügen myDataFrame$SpaltenBezeichnung <- c(“Wert1”,“Wert2”,“Wert3”)

Ergebnis: name alter geschlecht SpaltenBezeichnung 1 Thomas 34 M Wert1 2 Johan 21 M Wert2 3 Linda 49 W Wert3

# Neue Zeile hinzufügen newDataFrameRows <- data.frame ( name = c(“Igor”, “Andreas”, “Sascha”), alter = c(19, 25, 34), geschlecht = c(“M”, “M”, “W”), SpaltenBezeichnung = c(“new1”,“new2”,“new3”), stringsAsFactors = FALSE )

rbind(myDataFrame,newDataFrameRows)

Ergebnis: name alter geschlecht SpaltenBezeichnung 1 Thomas 34 M Wert1 2 Johan 21 M Wert2 3 Linda 49 W Wert3 4 Igor 19 M new1 5 Andreas 25 M new2 6 Sascha 34 W new3

Tabelle

# GUI aufrufen, um die zuvor erstelle Tabelle zu bearbeiten myTable <- edit (myTable) oder fix (myTable) # Hier wird der veränderte Wert zum ursprünglichen Symbol (myTable) hinzugefügt

# Anzahl Zeilen und Spalten einer Tabelle anzeigen dim(tableName)

# Die Namen der Spalten auflisten colnames(tablName)

# Tabelle auf gewünschte Spalten reduzieren Eingabe: train[,c(‘age’,’name’)]

Bedingung (if/else)

# if / else x <- 1 if (1 > 2) “yes” else “no”

# Ausdrücke mit Semikolon (;)hintereinander schreiben “hello”; 1+1; 1*3

Loop

i = 5 repeat {if (i > 25) break else {print(i); i <- i + 5;}} oder while (i <= 25) {print(i); i <- i + 5} oder for (i in seq(from=0, to=100, by=5)) print(i)

oder

seq(0, 100, by = 5)

Ergebnis: 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 Datenbank Verbindungsaufbau und Query Abfrage

Funktionen

# Unterschiedliche Schreibweisen und Funktionsparameter log2(64) log(x=64,base=2) log(64,2)

# funktion mit Funktion-Argumenten erstellen x <- function(i) i^2 x(2) # Ergebnis: 4

# Eigene Funktion schreiben nameDerFunktion <- function(Übergabeparameter) { print(Übergabeparameter) }

# Funktionsaufruf nameDerFunktion(Übergabeparameter)

# Funktion mit mehreren Parameter sayHelloWorld <- function(s,h) { cat(s, “”, h) } sayHelloWorld(s=“Hello”, h=“World”) oder sayHelloWorld(“Hello”, “World”)

# Funktion mit vorgegebenen Werten sayHelloWorld <- function(s=“H”,h=“W”) { cat(s, “”, h) } sayHelloWorld() # Für die Ausgabe der vorgegebenen Werten sayHelloWorld(“Hello”, “World”) # Um die vorgegebenen Werte zu überschreiben

Mathematische Funktionen

# Anzahl der Nachkommastellen festlegen. Maximal sind 17 Stellige Zahlen z.B. eine Zahl und 16 Nachkommastellen erlaubt. Default = 6 Nachkommastellen bzw. 7 Stellige Zahlen options(digits=17) # Runden z.B. Wurzel 99 round( sqrt(99) ) oder round(x=sqrt(99), digits=2) # Angabe der Nachkommastellen oder round(sqrt(99), 2)

# Durchschnittswert Berechnen x = c(1,2,3) # (1+2+3)/3 mean(x) # 2

# Median bzw. Zentralwert Berechnung x = c(1, 2, 4, 99) median(x) # 3

# Minimalwert und Maximalwert min(x) max x) oder range(x) # 1 99

# Maximaler Wert minus minimaler Wert diff( range(x) ) # Zufällige Daten erzeugen sample(1:1000, 10, replace = FALSE, prob = NULL)

# 10x die Zahl 0 erzeugen a <- rep(0, 10)

# Formatierung der Ausgabe format(20.0, nsmall = 10) # die Nachkommastelle um 10 Stellen auffüllen

Ergebnis: “20.0000000000”

# Reduzierung der Nachkommastellen format(20.123456789, digits = 4)

Ergebnis: 20.12

# Wissenschaftliche Schreibweise format(20.0000000000, scientific = TRUE)

Ergebnis: 2e+01 # # Eingab in String formatieren format(100)

Ergebnis: “100”