Event:2018/03/19 Vortrag R: Unterschied zwischen den Versionen

Aus k4cg.org
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 11: Zeile 11:
[[Datei:R-Talk.pdf]]
[[Datei:R-Talk.pdf]]


== Notizen ==
= Notizen =





Version vom 6. Dezember 2023, 09:44 Uhr

Datum: 19. Maerz 2018

Beginn: 19 Uhr

Vortragender: noqqe

Inhalt wird die Programmiersprache R sein. Was macht sie aus, warum gibt es sie und wer benutzt R eigentlich?

Folien

Datei:R-Talk.pdf

Notizen

Scope dieses kleinen Talks

Soll eine kurze Einführung in R werden ohne gross in krasse Programmierung einzutauchen

Was ist R

R ist eine Programmiersprache um mit Daten zu hantieren. Statistische Auswertung Excel für Akademiker

Geschichte von R

1992 als Nachfolger von S S war von Bell Labs und hatte nicht wirklich eine freie Lizenz R ist in C, Fortran (heute noch) und R geschrieben.

Bedienung

Interactive Mode

oder eben als File (`gewinn.R`)

```

  1. !/usr/bin/Rscripteuro <- function(x){ y = format(x, digits=10, nsmall=2, decimal.mark=",", big.mark=".") paste(c(y), "EUR")}s = rev(read.table('~/foo.txt'))income = rev(s$V2)# Print some informationseuro(sum(income))euro(mean(income))# Graph cars using blue points overlayed by a lineplot(income, type="o", col="blue")# Create a title with a red, bold/italic fonttitle(main="Gewinn", col.main="red", font.main=4)

```

Datentypen

- Integer - String - Vector - List - matrix - data.frame

Integer

``` > y [1] 15 ```

String

``` > y [1] "cccc" ```

Vector

Beste Sache in ganz R

``` > x <- c(1,4,6,7) > x [1] 1 4 6 7 ```

Warum sind Vektoren jetzt so geil?

List

``` > a <- c("foo", "bar", "baz") > b <- c("alice", "bob") > x <- list(a,b) > x 1 [1] "foo" "bar" "baz"

2 [1] "alice" "bob" ```

Matrix

``` > x <- matrix( c(2, 4, 3, 1, 5, 7), nrow=3, ncol=2 ) > x

    [,1] [,2]

[1,] 2 1 [2,] 4 5 [3,] 3 7 ```

Data Frame

``` > d <- data.frame(drinks=c("Mate","Coffee"),consumption=c(23,42)) > d

 drinks consumption

1 Mate 23 2 Coffee 42 ```

Auch etwas worin R sehr gut ist. Daten auf dem Terminal Formattieren.

``` people = data.frame ( age = c(32,34,12,41,18,23,43,22,19,24), height = c(177,166,165,174,156,184,191,179,182,180), sex = c('M','F','M','M','F','M','F','F','M','F'))

> people

  age height sex

1 32 177 M 2 34 166 F 3 12 165 M 4 41 174 M 5 18 156 F 6 23 184 M 7 43 191 F 8 22 179 F 9 19 182 M 10 24 180 F ```

Funktionen

``` > a <- c(1,2,3) > oddcount <- function(x) {

 k <- 0
 for (n in x) {
   if (n %% 2 == 1 ) k <- k+1
 }
 return(k)

}

> oddcount(a) [1] 2 ```

Builtin Funktionen (Exploration)

``` rnorm(100) ## Random Normal Distribution mean(x) ## Durchschnitt sd(x) ## Standard Abweichung seq(100) ## zähle bis 100 rep(98,4) ## wiederholt werte (repeat) all(x > 8) ## Makro für IF Conditions, wenn ALLE dann any(x > 8) ## wenn IRGENDEINS dann sqrt(9) ## Wurzel ziehen round(12.2) ## Runden auf nächsten Wert head(x) ## einfach wie in Unix tail(x) ## same here subset(x,x > 5) ## Filtern innerhalb Vectoren nach Conditions which(x,x > 5) ## Selbes, gibt aber die relativen positionen der Werte aus. diff(x) ## berechnet die unterschiede innerhalb nummerischer Vektoren sign(x) ## "begradigt" negative und positive werte length(x) ## länge von vectoren abfragen sort(x) order(x) ## sortieren mit realtiven index angaben als return str(x) ## welche Struktur hat der Vector? mode(x) ## was für eine Struktur liegt vor? summary(x) ## erzähl mir alles was so geht über x? print(x) ## gib mir die print methode für den jeweiligen Datentypen class(x) ## zeigt die Class an zb. "data.frame" apply(x,y,z) ## funktion für jeden Wert in vecotr ausführen lapply(x,y,z) ## selbes für liste sapply(x,y) ## für liste, aber rückgabe als vector cbind(matrix,vector) ## column an matrix binden rbind(matrix,vector) ## row an matrix binden dim(matrix) ## columns und rows anzahl einer matrix ausgeben nrow(x) ## nur rows ncol(x) ## nur columns attributes(x) ## attribute einer klasse abfragen (zb. dim bei matrix) as.matrix as.numeric as.character as.factor colnames(matrix) ## columns namen geben (von matrix) rownames(matrix) ## für rows names(j) ## beschreibungen ausgeben bei listen unlist(j) ## liste zu vector konvertieren unname(j) ## alle namen entfernen ```

sapply

``` > t <- function(x) {

 y <- x + 1
 return(y)

}

> o <- c(1,4,56,8,12) > sapply(o,t) [1] 2 5 57 9 13 ```

lapply

``` > o <- c(1,4,56,8,12) > p <- c(12,42,23,1337) > q <- list(p,o)

> q 1 [1] 12 42 23 1337

2 [1] 1 4 56 8 12

> lapply(q,mean) 1 [1] 353.5

2 [1] 16.2

> lapply(q,max) 1 [1] 1337

2 [1] 56 ```

apply

``` m<-matrix(1:100,nrow=10,ncol=10)

> m

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1   11   21   31   41   51   61   71   81    91
[2,]    2   12   22   32   42   52   62   72   82    92
[3,]    3   13   23   33   43   53   63   73   83    93
[4,]    4   14   24   34   44   54   64   74   84    94
[5,]    5   15   25   35   45   55   65   75   85    95
[6,]    6   16   26   36   46   56   66   76   86    96
[7,]    7   17   27   37   47   57   67   77   87    97
[8,]    8   18   28   38   48   58   68   78   88    98
[9,]    9   19   29   39   49   59   69   79   89    99

[10,] 10 20 30 40 50 60 70 80 90 100

> apply(m,1,mean)

[1] 46 47 48 49 50 51 52 53 54 55

> apply(m,2,mean)

[1] 5.5 15.5 25.5 35.5 45.5 55.5 65.5 75.5 85.5 95.5

> apply(m,1,function(x) x * 10)

     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]   10   20   30   40   50   60   70   80   90   100
[2,]  110  120  130  140  150  160  170  180  190   200
[3,]  210  220  230  240  250  260  270  280  290   300
[4,]  310  320  330  340  350  360  370  380  390   400
[5,]  410  420  430  440  450  460  470  480  490   500
[6,]  510  520  530  540  550  560  570  580  590   600
[7,]  610  620  630  640  650  660  670  680  690   700
[8,]  710  720  730  740  750  760  770  780  790   800
[9,]  810  820  830  840  850  860  870  880  890   900

[10,] 910 920 930 940 950 960 970 980 990 1000 ```

Daten einlesen

``` read.table("bla.csv",header=FALSE) ## Import von CSV Dateien > x <- read.csv("Downloads/hurricanes.csv", header=TRUE) > x

 Month Average X2005 X2006 X2007 X2008 X2009 X2010 X2011 X2012 X2013 X2014

1 May 0.1 0 0 1 1 0 0 0 2 0 0 2 Jun 0.5 2 1 1 0 0 1 1 2 2 0 3 Jul 0.7 5 1 1 2 0 1 3 0 2 2 4 Aug 2.3 6 3 2 4 4 4 7 8 2 2 5 Sep 3.5 6 4 7 4 2 8 5 2 5 2 6 Oct 2.0 8 0 1 3 2 5 1 5 2 3 7 Nov 0.5 3 0 0 1 1 0 1 0 1 0 8 Dec 0.0 1 0 1 0 0 0 0 0 0 0

scan(tf,"") ## import von textdateien ```

Visualisierungen

Builtin Visualisierung mittels `plot` und `lines`

``` > a <- c(1,2,3) > plot(a) ```


Heutzutage benutzt man aber `ggplot`, was ein externe Library ist.

Was mach ich mit R?

Im Grunde kann man damit alles machen was man will, weil Turing Complete.

    1. Was macht die Industrie mit R

Marktforschern (Data Scientists) benutzt um Modelle zu bauen Sobald Modelle sich als valide erweisen werden sie dann von Programmierern in anderen besser skalierbareren Sprachen implementiert und auf den ganzen Datenbestand angewendet. Zum Beispiel mit Scala oder MapReduce/Yarn Stack von Hadoop

Was kann ich mit R alles machen?

R und ich haben so eine Art Hopon-Hopoff Beziehung. Seit 2012 bastel ich immer mal wieder Phasenweise mehr und mal weniger damit herum.

```

```

```

  • Kontoführung
  • Fahrrad Stats (Distanz, Herzrate, Geschwindigkeitsentwicklung)

```

Wie Entwickelt ich R ?

```

  • Commandline Interaktiv
  • Vim
  • R-Studio (IDE)

```

Das R-Universum

```

```

Schwächen von R

RAM. Sobald deine Daten nicht mehr in deinen RAM passen ist es vorbei. Workaround: Wir haben riesige Maschinen bei Amazon hochgefahren, brauchen sie aber meistens nicht weil die Data Scientists eh nur mit kleinen Datenmengen modellieren.