Erste Schritte mit R / Teil II

Statistik und Tabellen

In diesem Teil meiner kleinen offenen Serie rund um die Programmiersprache R geht es um einfache Statistikfunktionen und das Arbeiten mit und Erstellen von Tabellen.

Ich bin Einsteiger in R und da ich für eine vollständige tageweise Schulung nicht die Zeit habe, versuche ich nach Anleitungen im Netz zu dilettieren, die es ebenso einfach für mich erklären, wie ich es hiermit für Euch versuche. Die hier genannten Übungen helfen mir hoffentlich besser in der Lage zu sein, darstellbare und auswertbare Tabellen zu erstellen.

Im ersten Teil meiner kleinen offenen Serie habe ich mich mit einfachen String-Funktionen auseinandergesetzt.

Als totaler Anfänger in R bin ich zur Zeit auf der Suche nach Tutorials, die ich mit meinen Kenntnissen umsetzen kann.

Dabei bin ich auf die Website The Programming Historian gestossen, auf der es im Moment (Stand Januar 2020) 80 Lektionen ( Link: https://programminghistorian.org/en/lessons/) für programmierende Historiker gibt, aber die sollten ja auch für einen programmierenden Designer, wie mich, interessant sein. Ich habe mich, um später weiter den Text Schau heimwärts, Engel! von Tom Wolfe auszuwerten, für die Lektion Basic Text Processing in R von Taylor Arnold entschieden. Das Protokoll und meine Notizen zu dieser Übung gibt es in der nächsten Folge.

Vorher erarbeite ich mir aber erste die Lektion R Basics von Taryn Dewar und spiele ein wenig mit den genannten Daten und Funktionen zum besseren Verständnis herum.

In dieser Arbeitsnotiz geht es unter anderem um diese Funktionen der Programmiersprache R:

setwd(), dir(), paste(), write.table(), data(), mean(), median(), min(), max(), quantile(), summary(), cbind(), rbind(), rownames(), colnames()

Einfache Statistikfunktionen

Mean() und Median()

Das Tutorial enthält einige Basics zum Umgang mit statistischen Werten, wie dem Mittelwert, dem Medianwert, Maximalwerten und Minimalwerten.

Wie Ihr bestimmt schon gemerkt habt, ist mein Blog und vor allem diese Artikelserie ja auch eine Art öffentliche Notizfunktion für mich selbst. 

Deshalb hier ein kurzes Protokoll meiner Spielereien mit R und den Funktionen mean() und median() anhand der in R mitgelieferten Passagierliste und den im oben genannten Artikel des The Programming Historians.

 

Im ersten Schritt öffne ich R und richte mein Arbeitsverzeichnis ein.

setwd("C:/R/r-wolfe")
Arbeitsverzeichnis einrichten.

Die Funktion mean() liefert den Mittelwert eines Datensatzes, die Funktion median() den sogenannten Zentralwert - den Wert der Datenbasis, der genau in der Mitte steht - das muss nicht zwingend der Mittelwert sein. 

Die Daten aus der Passgierliste in R holt man sich mit data(AirPassengers), wie man sieht eine einfache Tabelle mit der Anzahl von Passagieren (in 1000), die zwischen Januar 1949 und Dezember 1960 geflogen sind. Bitte auf Groß- und Kleinschreibung achten. 

data(AirPassengers)
AirPassengers
     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
1949 112 118 132 129 121 135 148 148 136 119 104 118
1950 115 126 141 135 125 149 170 170 158 133 114 140
1951 145 150 178 163 172 178 199 199 184 162 146 166
1952 171 180 193 181 183 218 230 242 209 191 172 194
1953 196 196 236 235 229 243 264 272 237 211 180 201
1954 204 188 235 227 234 264 302 293 259 229 203 229
1955 242 233 267 269 270 315 364 347 312 274 237 278
1956 284 277 317 313 318 374 413 405 355 306 271 306
1957 315 301 356 348 355 422 465 467 404 347 305 336
1958 340 318 362 348 363 435 491 505 404 359 310 337
1959 360 342 406 396 420 472 548 559 463 407 362 405
1960 417 391 419 461 472 535 622 606 508 461 390 432
Die Tabelle AirPassengers ist in der Installation von R enthalten.

Den Mittelwert aller Monate erhält man mit 

mean(AirPassengers)
[1] 280.2986
mean()

und den median mit

median(AirPassengers)
[1] 265.5
median()

Den kleinsten Wert bekommen wir mit der Funktion min().

min(AirPassengers)
[1] 104
min()

Den höchsten Wert aus der Tabelle Passengers erhalten wir mit der Funktion max().

max(AirPassengers)
[1] 622
max()
Quantile als Lagemaße

quantile() und summary() 

Auch Quantile können wir uns mit der Funktion quantile() anzeigen lassen. Quantile sind Lagemaße in der Statistik und besonders in der Bevölkerungsstatistik und Ergonomie bedeutsam. Das 25-%-Quantil ist der Wert, für den gilt, dass 25 % aller Werte kleiner sind, als dieser Wert. 

quantile(AirPassengers)
   0%   25%   50%   75%  100% 
104.0 180.0 265.5 360.5 622.0 
Die Funktion quantile() zeigt uns Werte an, die eine Menge von Werten nicht über- oder unterschreitet.

In R gibt es praktischerweise eine Funktion, die die wichtigsten statistischen Daten zusammenfasst, das ist die Funktion summary(). Sie stellt den Minimalwert, den Quantile-Punkt von 25% , den Median, den Mittelwert, den 75 % Quantile und den Maximalwert dar.

summary(AirPassengers)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  104.0   180.0   265.5   280.3   360.5   622.0 
Mit summary() eine Tabelle mal kurz auswerten.
Einfache Tabellenfunktionen

Selbst Tabellen erstellen

Wie können wir jetzt selbst Tabellen erstellen? Das ist in R erstaunlich einfach und geht richtig schnell.

Nehmen wir einmal an, wir wollen diese Daten in eine Tabelle schreiben:

data1 <- c(2,30,38,13)
data2 <- c(7,20,36,3)
data1
[1]  2 30 38 13
data2
[1]  7 20 36  3
Ein paar Beispieldaten

Um aus diesen Daten eine Matrix zu erstellen, können wir die cbind() Funktion verwenden, einmal grob mit spaltenweise zusammenbinden (column bind) übersetzt. Natürlich kann man die Reihenfolge der eingefügten Daten in der Klammer ändern. Dabei nutzt R unsere Objektbezeichnungen als Spaltenüberschriften.

table <- cbind(data1,data2)
table
     data1 data2
[1,]     2     7
[2,]    30    20
[3,]    38    36
[4,]    13     3
Die Funktion cbind() schnürt uns die Tabelle zusammen.

Und zeilenweise sähe es mit der Funktion rbind() - zeilenweise zusammenbinden (row bind) so aus. Dabei werden die Objektnamen als Zeilenbeschriftungen genutzt.

table <- rbind(data1,data2)
table
      [,1] [,2] [,3] [,4]
data1    2   30   38   13
data2    7   20   36    3
Mit rbind() wird die Tabelle zeilenweise zusammengeschnürt.

Und wir können auch Zeilen anhängen, in diesem Falle die Werte aus data3:

data3 <- c(1,2,3,5)

table <- rbind(table,data3)
> table
      [,1] [,2] [,3] [,4]
data1    2   30   38   13
data2    7   20   36    3
data3    1    2    3    5
Zeilen anhängen.

Die Bezeichnungen für die Zeilen und Spalten sehen jetzt natürlich noch nicht so prickelnd aus. Das lässt sich relativ schnell ändern. Die Spalten als auch die Zeilenüberschriften benennen wir einfach um, indem wir für die Zeilen rownames() und für die Spalten colnames() verwenden:

rownames(table) <- c("Januar","Februar","März")
> table
        [,1] [,2] [,3] [,4]
Januar     2   30   38   13
Februar    7   20   36    3
März       1    2    3    5

colnames(table) <- c("Woche 1","Woche 2","Woche 3","Woche 4")
> table
        Woche 1 Woche 2 Woche 3 Woche 4
Januar        2      30      38      13
Februar       7      20      36       3
März          1       2       3       5
rownames(), colnames()

Gefällt uns diese Anordnung nicht, invertieren wir die Tabelle ganz einfach mit t(). Dabei steht das t für transpose, was sich wohl ganz gut mit umsetzen übersetzen lässt.

t(table)
        Januar Februar März
Woche 1      2       7    1
Woche 2     30      20    2
Woche 3     38      36    3
Woche 4     13       3    5
Tabellen umsetzen (invertieren) mit t().

Und natürlich können wir für die Tabelle auch wieder Auswertungen vornehmen:

summary(table)
summary(table)
    Woche 1         Woche 2         Woche 3         Woche 4  
 Min.   :1.000   Min.   : 2.00   Min.   : 3.00   Min.   : 3  
 1st Qu.:1.500   1st Qu.:11.00   1st Qu.:19.50   1st Qu.: 4  
 Median :2.000   Median :20.00   Median :36.00   Median : 5  
 Mean   :3.333   Mean   :17.33   Mean   :25.67   Mean   : 7  
 3rd Qu.:4.500   3rd Qu.:25.00   3rd Qu.:37.00   3rd Qu.: 9  
 Max.   :7.000   Max.   :30.00   Max.   :38.00   Max.   :13
summary() Funktion auf die aktuelle Tabelle angewendet.

Und für einzelne Zeilen oder Spalten, in dem wir in eckigen Klammern die Zeile vor dem Komma oder die Spalte nach dem 
Komma angeben.

summary(table[1,])
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   2.00   10.25   21.50   20.75   32.00   38.00 
> summary(table[,1])
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   1.500   2.000   3.333   4.500   7.000 

Oder einfach nur einen Mittelwert für die dritte Spalte ermitteln:

mean(table[,3])
[1] 25.66667

Das war jetzt nur ein kleiner Überflug über sehr sehr einfache Tabellen- und Statistikfunktionen in der Programmiersprache R.  

Ich freue mich über Anregungen und Kritik.

tl, dr;

Einfache Statistikfunktionen in R und das Erstellen von und Arbeiten mit Tabellen in dieser Programmiersprache.

Kommentare (0)


Schreibe einen Kommentar




Mit dem Absenden des Kommentars stimme ich zu, dass der genannte Name, die genannte E-Mail-Adresse von cronhill.de im Zusammenhang mit dem von mir verfassten Kommentar gespeichert wird. Die E-Mail-Adresse wird nicht veröffentlicht oder an Dritte weitergegeben.