Paket Bibliothek

Paket Bibliothek

Auf dieser Seite werden Sie Empfehlungen für subjektiv hilfreiche CRAN-Pakete und sicher das ein oder andere spezifische Paket finden. Es wird natürlich empfohlen, Pakete die hier zum Download angeboten werden, zu aktualisieren. Für die einwandfreie Funktion und für die Korrektheit der Ergebnisse wird keine Haftung übernommen!

Struktur:

Schlagwort

Paket

Beschreibung

PDF-Dat ei

 

Allgemeines

Hmisc

Das Paket Hmisc (Harrell Miscellaneous) ist eine Sammlung nützlicher Funktionen aus verschiedenen Bereichen. Gehört praktischen in jeden Haushalt!

Hmisc-PDF-Dokumentation

 

Allgemeines

MASS

Das Paket Main Package of Venables and Ripley's MASS wird über die R-Installation geliefert, muss also nur noch in die R-Umgebung geladen werden.
Dieses Paket ist eine Sammlung verschiedener Funktionen und Beispieldatensätzen. Auch beinhaltet diese Paket die Funktion lda(), siehe Paket LinDA.

 

Seitenanfang

Allgemeines

reshape

reshape2

Über das Paket reshape können Datenobjekte “redesigned” werden. Die Voraussetzung zur Anwendung ist das Paket plyr. Im Folgenden Beispiel wird das Datenobjekt list in einem data.frame-Objekt gewandelt:

    > Liste
    [[1]]
    [1] 11 22 33 44 55 66

    [[2]]
    [1] 111 222 333 444 555 666

    [[3]]
    [1] "A" "B" "C" "E" "F" "G"

    > Liste_a <- melt(Liste)
    > Liste_a
       value L1
    1     11  1
    2     22  1
    3     33  1
    4     44  1
    5     55  1
    6     66  1
    7    111  2
    8    222  2
    9    333  2
    10   444  2
    11   555  2
    12   666  2
    13     A  3
    14     B  3
    15     C  3
    16     E  3
    17     F  3
    18     G  3

Das ist natürlich nicht die wesentliche Qualität des Paketes, sondern die Aggregierungs-Funktion cast() die nach melt() auf Datenobjekt angewendet werden kann. Schauen Sie sich das Paketbeispiel einfach mal an.

Hmisc-PDF-Dokumentation

 

Hmisc-PDF-Dokumentation

Seitenanfang

Allgemeines

zoo

Das Paket Z's ordered observations ist eine Funktionssammlung für geordnete, indizierte Zeitreihenanalysen. Beinhaltet z. B. die Funktion “Rollender Mittelwert” rollmean().

zoo-PDF-Dokumentation

Seitenanfang

Allgemeines

nortest

Verschiedene Testverfahren auf Normalität:

  • Anderson-Darling
  • Cramer-von Mises
  • Lilliefors (Kolmogorov-Smirnov)
  • Pearson chi-square
  • Shapiro-Francia

nortest-PDF-Dokumentation

Seitenanfang

Allgemeines

 

doBy

Über die Funktionen des Paketes doBy können für gruppierte Beobachtungen elegant summarische statistische Parameter ermittelt werden. Die Bandbreite erstreckt sich von den R-Standardfunktion bis zu eigenen Funktionen. Aber wie immer, ein Beispiel sagt mehr als 1000 Worte:

    Für das Beispiel wird der  "ChickWeight-datasets" der R-Basic-Installation, umbenannt in "Hühner", verwendet:

    > str(Hühner)
    Classes ‘nfnGroupedData’, ‘nfGroupedData’, ‘groupedData’ and 'data.frame':      578 obs. of  4 variables:
     $ weight: num 42 51 59 64 76 93 106 125 149 171 ...
     $ Time : num  0 2 4 6 8 10 12 14 16 18 ...
     $ Chick : Ord.factor w/ 50 levels "18"<"16"<"15"<..: 15 15 15 15 15 15 15 15 15 15 ...
     $ Diet : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...

    - attr(*, "formula")=Class 'formula' length 3 weight ~ Time | Chick
      .. ..- attr(*, ".Environment")=<environment: R_EmptyEnv>
     - attr(*, "outer")=Class 'formula' length 2 ~Diet
      .. ..- attr(*, ".Environment")=<environment: R_EmptyEnv>
     - attr(*, "labels")=List of 2
      ..$ x: chr "Time"
      ..$ y: chr "Body weight"
     - attr(*, "units")=List of 2
      ..$ x: chr "(days)"
      ..$ y: chr "(gm)" 

    > head(Hühner)  # Schauen wir uns die ersten paar Daten über head an
    Grouped Data: weight ~ Time | Chick
      weight Time Chick Diet
    1     42   0     1    1
    2     51   2     1    1
    3     59   4     1    1
    4     64   6     1    1
    5     76   8     1    1
    6     93  10     1    1

    Time ist als Altersklassifikation zu verstehen. Zum Prüfen der später doBy-Funktion schauen wir uns die Altersklassifizierung "12" an:

    > Hühner_T12 <- subset(Hühner, Hühner$Time == "12")
    > Hühner_T12
    Grouped Data: weight ~ Time | Chick
        weight Time Chick Diet
    7      106  12     1    1
    19     122  12     2    1
    31     115  12     3    1
    43     102  12     4    1
    55     141  12     5    1
    67     141  12     6    1
    79     146  12     7    1
    91     110  12     8    1
    102     90  12     9    1
    114     89  12    10    1
    126    168  12    11    1
    138    119  12    12    1
    150     71  12    13    1
    162    164  12    14    1
    174     67  12    15    1
    182     54  12    16    1
    189     98  12    17    1
    203     82  12    19    1
    215     77  12    20    1
    227    217  12    21    2
    239    108  12    22    2
    251    127  12    23    2
    263     70  12    24    2
    275    146  12    25    2
    287    136  12    26    2
    299    115  12    27    2
    311    145  12    28    2
    323    134  12    29    2
    335    115  12    30    2
    347    123  12    31    3
    359    159  12    32    3
    371    137  12    33    3
    383    164  12    34    3
    395    201  12    35    3
    407    145  12    36    3
    419    103  12    37    3
    431    128  12    38    3
    443    130  12    39    3
    455    154  12    40    3
    467    155  12    41    4
    479    160  12    42    4
    491    184  12    43    4
    503    127  12    44    4
    513    135  12    45    4
    525    144  12    46    4
    537    148  12    47    4
    549    154  12    48    4
    561    152  12    49    4
    573    155  12    50    4
     
    > mean(Hühner_T12$weight)
    [1] 129.2449
    > sd(Hühner_T12$weight)
    [1] 34.1196

    Eine Übersicht über den gesamten Datensatz Hühner über die Time- Klassifikation bezüglich Mittelwert und Standardabweichung für das Hühnergewicht weight wird über die Funktion summaryBy ausgegeben:

    > Übersicht <- summaryBy(.~Time, data=Hühner, FUN = c(mean, sd))
    > Übersicht
       Time weight.mean weight.sd
    1     0   41.06000  1.132272
    2     2   49.22000  3.688316
    3     4   59.95918  4.495179
    4     6   74.30612  9.012038
    5     8   91.24490 16.239780
    6    10  107.83673 23.987277
    7    12  129.24490 34.119600
    8    14  143.81250 38.300412
    9    16  168.08511 46.904079
    10   18  190.19149 57.394757
    11   20  209.71739 66.511708
    12   21  218.68889 71.510273

    Siehe Zeile 7 und vergleiche mit mean und sd weiter oben!

    Daneben Time weight die einzige kontinuierliche Variable ist, wird der .-Operator nur für weight interpretiert. Die Formel-Ausprägung zeigt das gleiche Resultat:

    > Übersicht <- summaryBy(weight~Time, data=Hühner, FUN = c(mean, sd))

Das Paket doBy gibt es auch als R-Commander-Plugin:

doBy_R_Cmd_1

Die Ausführung, ohne Result-Data-Frame, zeigt die erwartete Schätzung:

doBy_R_Cmd_2

 

nortest-PDF-Dokumentation

Seitenanfang

Allgemeines

stringr

Das Paket stringr beinhaltet zahlreiche effektive Funktionen zur Zeichenketten(String-)bearbeitung. Die folgenden kleinen Beispiele sollen einen Eindruck über die Möglichkeiten des Paketes vermitteln:

  • Konstruieren wir 2 Zeichenketten:
     
      • > a <- "Erste Zeichenkette"
        > b <- "Zweite Zeichenkette"
         

  • Über die Funktion length() erhalten wir das bekannte Ergebnis, dass 1 Element in den Objekten a und b enthalten ist:
     
      • > length(a); length(b)
        [1] 1
        [1] 1

Um einzelne Zeichen der Zeichenkette zu bearbeiten, hilft uns diese Funktion nicht nicht weiter. Hier kommen die Funktionen des Paketes stringr zum Zuge:

  • Über die Funktion str_length() des Paketes, erhalten wir die Anzahl der Zeichen in den Zeichenketten:
     
      • > str_length(a)
        [1] 18
        > str_length(b)
        [1] 19
         

  • Über die Funktion str_extract_all() kann nun die Zeichenkette zerlegt werden. Die Zeichenkette wird als Liste ausgegeben:
     
      • > str_extract_all(a, regex("[a-z]", TRUE))
        [[1]]
         [1] "E" "r" "s" "t" "e" "Z" "e" "i" "c" "h" "e" "n" "k" "e" "t" "t" "e"


        > str_extract_all(b, regex("[a-z]", TRUE))
        [[1]]
         [1] "Z" "w" "e" "i" "t" "e" "Z" "e" "i" "c" "h" "e" "n" "k" "e" "t" "t" "e"

         

  • Auf zum Beispiel das 2. Zeichen der Zeichenkette a kann über Listen-Argumente zugegriffen werden:
     
      • > a_zerlegt <- str_extract_all(a, regex("[a-z]", TRUE))
        > a_zerlegt[[1]][2]
        [1] "r"

         

  • Auch können Sub-Zeichenketten innerhalb der Zeichenkette elegant lokalisiert werden:
     
      • > str_locate(a, "chen")  # An welcher Stelle befindet sich “chen” in a?
             start end
        [1,]    10  13

Das Paket bietet wie erwähnt, noch weitere hilfreiche Funktionen zur Zeichenkettenanalyse und -bearbeitung.

 

Seitenanfang

Allgemeines

LinDA

Lineare Dskriminanzanalyse LinDA

LinDA stellt im wesentlichen eine Variante der Funktionen lda(), predict() und plot() dar, die in der Benutzung und Ausgabe vereinfacht wurden. Das Verfahren “lineare Diskriminanzanalyse”€ und Nutzung des Paketes wird auf www.faes.de beschrieben. Die Voraussetzung ist, dass der Datensatz auf dem die Schätzung der Diskriminanzfunktion durchgeführt werden soll, als 1. Spalte die Gruppenvariable enthält:

LinDA_Datei_1

 

 

Seitenanfang

Business Analytics

RcmdrPlugin.BCA

Das R-Commander-Plugin BCA ist eine Ergänzung des R-Commanders zur Geschäftsdatenanalyse und um sich mit  Data-Mining-Verfahren vertraut zu machen. Diese Verfahren werden in dem Buch Customer and Business Analytics von Daniel S. Putler und Robert E. Krider, die auch die Designer des Plug-In’s sind, ausführlich beschrieben. Wie für R-Commander-Plugin’s  üblich, werden die R-Commander-Menüs entsprechend erweitert. Als Beispiel wird hier der Bereich der Modellbildung gezeigt:

BCA_1

 

 

Seitenanfang

Business Analytics

Rattle

Rattle ist ein Paket zur Geschäftsdatenanalyse unter dem Schlagwort “Data Mining”.  Rattle stellt eine eigene GUI zur Datenanalyse zur Verfügung und diese wird in dem Buch Data Mining with Rattle und R von Graham Williams ausführlich beschrieben. Die GUI wird nach dem Laden des Paketes rattle durch Ausführen der Funktion rattle() gestartet:

rattle_1

Rattle biete umfangreiche Funktionen zum Datenmanagement, zur Modellbildung und deren Beurteilung an.

 

Seitenanfang

Grafik

 

networkD3

Über das Paket networkD3 lassen sich interaktive Netzwerkgrafiken auf Basis des htmlwidgets-Rahmen erzeugen. Hier ein Beispiel dazu:

      > library(magrittr) # Brauchen wir später zum Speichern 

      > library(networkD3)
      > src <- c("A", "A", "A", "A","B", "B", "C", "C", "D")    
      > target <- c("B", "C", "D", "J", "E", "F", "G", "H", "I")           
      > networkData <- data.frame(src, target) 
      > networkData
        src target
      1   A     B
      2   A     C
      3   A     D
      4   A     J
      5   B     E
      6   B     F
      7   C     G
      8   C     H
      9   D     I

Über die Funktion simpleNetwork() wird eine HTML-Datei im htmlwidgets-Framework erzeugt und als interaktive Grafik im Browser ausgegeben:

DJ3

Mithilfe des magritter-Paketes, wird die Grafik gespeichert und lässt sich zu z. B. in eine HTML-Umgebung einbinden:

      > simpleNetwork(networkData) %>% saveNetwork(file = "Beispiel.html")

DJ3_2

Beispiel_files enthält die nötigen Hilfsdateien. Mit einem Doppelklick auf die Datei Beispiel.html wird die Grafik im Browser angezeigt und "aktiv" angeboten.

 

Seitenanfang

Grafik

 

 

lattice

Grafik mit Lattice!
Das Paket lattice wird über die R-Installation geliefert, muss also nur noch in die R-Umgebung geladen werden. Die Stärke des Paketes lattice liegt in der übersichtlichen Darstellung mehrere Datenobjekte in panels, d. h. auf einer Grafikoberfläche werden die Daten in Bereichen dargestellt. Hier ein einfaches Beispiel:

    > Daten
      Wirkstoff.A Pruefer
    1        99.1    Karl
    2        99.3    Karl
    3        98.8   Peter
    4        98.9    Karl
    5        99.3   Peter
    6        99.2   Peter
    7        99.5    Karl
    8        99.4   Peter
    9        99.0   Peter

    > bwplot(~ Wirkstoff.A | factor(Pruefer), data = Daten)

Boxplot_lattice

Die Prüfergebnisse des Prüfers Karl werden über factor(Pruefer) gesammelt und auf einem panel dargestellt. Analoges gilt für den Prüfer Peter.
Eine gute Einführung in Lattice finden Sie hier...!

 

Seitenanfang

Grafik

 

gplots

Das Paket gplots bietet Ihnen einige interessante Grafikerweiterungen an. Als Beispiel sei hier die erweiterte Ausgabe eines Balkendiagramm um den Vertrauensbereich der dargestellten Merkmale gezeigt. Die Beispieldaten sind im Objekt Daten abgelegt und haben folgende Struktur:

    > Daten
              10-15 16-20 21-25 26-30 31-35
    Merkmal A    50    48    35    30    15
    Merkmal B    45    58    38    39    25
    Merkmal C    62    59    45    34    23
    Merkmal D    35    38    32    36    28

Nach dem Laden des Paketes gplots (und den weiteren geforderten Pakete wie bitops, caTools, gtools und gdata), können Sie über folgenden Funktionsaufruf ...

    VB_u <- Daten * 0.9 # Vertrauensbereich unten
    VB_o <- Daten * 1.1 # Vertrauensbereich oben
    barplot2(Daten, beside = TRUE,
            col = c("lightblue", "mistyrose",
                    "lightcyan", "lavender"),
            legend = rownames(Daten), ylim = c(0, 100),
            main = "Balkendiagramm mit Vertrauensbereich", font.main = 4,
            sub = "Vertrauensbereich 10%", col.sub = "blue",
            cex.names = 1.5, plot.ci = TRUE, ci.l = VB_u, ci.u = VB_o,
            plot.grid = TRUE)

... folgende grafische Darstellung eines Balkendiagramms mit den Vertrauensbereichsgrenzen erhalten:

Balkendiagramm_VB

 

Gplot-Dokumentation

Seitenanfang

Grafik

ggplot

Nachfolgend wir eine kurze Übersicht über die grafischen Möglichkeiten mit des  ggplot-Pakets gegeben. Die Voraussetzung ist natürlich das Einbinden des Paketes ggplot in die R-Umgebung. Das Erstellen einer Grafik weicht von der gewohnten R-Vorgehensweise ab. In ggplot spielt das Layer-Konzept die wesentliche Rolle. Das bedeutet, das Grafiken die im ggplot- Syntax erstellt wurden, nachträglich mit einem neuen Layer (Schicht) belegt werden können und es ist nicht nötig, die Grafik neu zu erstellen.

Die folgenden Beispiel basieren auf den mtcars-Datensatze:


      > str(mtcars)
      'data.frame':   32 obs. of  11 variables:
       $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
       $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
       $ disp: num  160 160 108 258 360 ...
       $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
       $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
       $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
       $ qsec: num  16.5 17 18.6 19.4 17 ...
       $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
       $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
       $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
       $ carb: num  4 4 1 1 2 1 4 2 2 4 …

      Zur gewünschten grafischen Darstellung, wird der Skalentyp num der Variable cyl in den Typ Factor transformiert:
       
      > mtcars$cyl <- factor(mtcars$cyl)
      > str(mtcars)

      'data.frame':   32 obs. of  11 variables:
       $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
       $ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...
       $ disp: num  160 160 108 258 360 ...
       $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
       $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
       $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
       $ qsec: num  16.5 17 18.6 19.4 17 ...
       $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
       $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
       $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
       $ carb: num  4 4 1 1 2 1 4 2 2 4 …


      1. Ausgabe, ohne explizite Angabe der "Geometrie" des Grafikobjektes:

      > qplot(cyl, mpg, data = mtcars)

       

      ggplot_ausgabe1

      Im 2. Beispiel wird die Geometrie des zu erstellenden Grafikobjektes angegeben:

      > Grafik <- qplot(cyl, mpg, data = mtcars, geom = "boxplot")

      Die Grafik wurde im Objekt Grafik gespeichert und wird erst mit Grafik-Eingabe auf der Konsole ausgegeben:

      > Grafik

      ggplot_Boxplot

Das hat bisher noch nichts mit dem Layer-Konzept zu tun, zeigt aber schon sehr schön das Grundkonzept von ggplot, nämlich das Annahmen gemacht werden. Das Geometrie-Konzept (geom = "boxplot") gehört dazu. Es beschreibt, wie die Daten ausgegeben werden sollen. In diesem Beispiel als Boxplot. Dazu gehört, dass der Anwender sich weniger Syntax-Gedanken über das Erstellen einer Grafik machen muss. Vergleichbar sieht obige Grafik ohne ggplot in R wie folgt aus:

      > boxplot(mpg ~ cyl, data = mtcars, xlab = "cyl", ylab = "mpg")

      ggplot_Boxplot_ohne

Kommen wir endlich zum Layer-Konzept! Der Boxplot wurde im Grafikobjekt Grafik gespeichert. Nun fügen wir als neuen Layer einen Grafiktitel über ggtitle zu:

      > Grafik <- Grafik + ggtitle("Verbrauch vs Anzahl der Zylinder")
      > Grafik

      ggplot_Boxplot_2

Sie können anhand des obigen Funktionsaufrufes erkennen, dass die Grafik Grafik nicht neu erzeugt wurde, sondern der Grafiktitel wurde über ggtitle als Layer dazuaddiert.

Um das Layer-Konzept zu verdeutlichen, bemühen wir ein neues Beispiel: Wir vermuten einen Zusammenhang zwischen Gewicht (wt) und dem Kraftstoffverbrauch (mpg) und erstellen eine grafische Übersicht für beide Variablen als Streudiagramm:

      > Grafik <- qplot(wt, mpg, data = mtcars)
      > Grafik

      ggplot_Streudia_1

Durch das Layer-Konzept kann nun einfach die Geometrie lineare Glättung dem Grafik-Objekt Grafik zugefügt werden:

      ggplot_Streudia_2

Neben der linearen Regressionsfunktion wird noch der Vertrauensbereich ausgegeben. Aus Sicht des Anwenders - und das ist was zählt - ist das Konzept bestechend einfach!
Wer ein wenig mehr Kontrolle über den Funktionsaufruf behalten möchte, kann die Funktion qplot auch argumentgesteuert aufrufen:

    > qplot(wt, mpg, data = mtcars, geom = c("point", "smooth"), method = "lm")

Es wird die gleiche grafische Ausgabe erhalten.

Über einen für den Anwender einfachen Funktionsaufruf lassen sich überaus ansehnliche Grafiken erstellen. Es wurde ja schon erwähnt, dass ggplot-Funktionen Annahmen machen, welche Grafik erstellt werden soll. Hier ist besonders die Funktion qplot zu erwähnen, die wir schon einige Male verwendet haben. Das folgende Beispiel greift auf den Datensatz quakes zurück, der die Örtlichkeiten und die entsprechenden Erdbebendaten der Fidschi-Inselgruppe beinhaltet:

      The data set give the locations of 1000 seismic events of MB > 4.0. The events occurred in a cube near Fiji since 1964.

      A data frame with 1000 observations on 5 variables.
      [,1]
      lat numeric Latitude of event
      [,2]
      long numeric Longitude
      [,3]
      depth numeric Depth (km)
      [,4]
      mag numeric Richter Erdbebenstärke
      [,5]
      stations numeric Number of stations reporting
       

Über folgenden qplot-Funktionsaufruf, wobei die Variablen depth und mag als zusätzlichen Informationsträger mit gleichzeitiger Unterstützung der Interpretierbarkeit, verwendet werden, erhalten wir eine informative und ansehnliche Grafik:

      > qplot(x = long, y= lat, data = quakes, size = mag, col = -depth) + ggtitle("Ort der Erdbeben auf den Fidschi's:")+ xlab("Längengrad") + ylab("Breitengrad")

      ggplot_Erdbeben

Zum Schluss dieser Übersicht speichern wir die Grafik als Datei:

        > ggsave(file = "Erdbeben Fidschis.jpg", Erdbeben)
        Saving 7 x 7 in image
        > ggsave(file = "Erdbeben Fidschis.png", Erdbeben)
        Saving 7 x 7 in image

Pas Paket ggplot bietet zahlreiche Funktionen zum Grafikdesign an, schauen Sie mal in die Hilfe! Alternativ ist das Buch zu ggplot zu empfehlen! Ebenso soll erwähnt werden, dass es einige Pakete gibt, die den Funktionsumfang von ggplot erweitern oder ggplot-Funktionen intern nutzen. Hier ist besonders auf Abhängigkeiten zu achten, da eine Weiterentwicklung von ggplot sich in eine vielleicht nicht gewünschte Form bemerkbar machen kann!

 

Seitenanfang

Grafik

GrapheR

Das Paket GrapheR bietet eine Oberfläche um Daten grafisch darzustellen und bezüglich der Darstellung einzustellen. Darstellung bedeutet hier, dass Sie in der Lage sind, ohne Argumente die Sie mit dem gewohnten Funktionsaufruf übergeben müssen, die Form der Darstellung anpassen können! Sie können also über das Paket z. B. den Linientyp, Achseinstellungen, Legende, usw. wählen und direkt beurteilen. Ein Beispiel sagt mehr als tausend Worte! Starten Sie nach dem Laden des Paketes  die Funktion run.GrapheR(), wird Ihnen die GrapheR-GUI angeboten:

GrapheR_1

Über das Menü lang können Sie Deutsch als GUI-Sprache einstellen und über  Lden des Datensatzes können Sie Ihre Daten zur Darstellung laden. Dazu werden Ihnen verschiedene Optionen, wie z. B auch das Einladen von csv-Daten, angeboten. Informationen über den Datensatz gibt Ihnen die Möglichkeit, die grafisch darzustellenden Variablen zu prüfen:

GrapheR_2

Möchten beispielsweise die Beziehung zwischen Cases und Egg.Pr des vorliegenden Datensatzes prüfen, können Sie die im folgenden Bild gezeigte Funktionalität nutzen:

GrapheR_3

Über die Schaltfläche DRAW wird die Grafik mit den von Ihnen gewählten Einstellungen gezeichnet:

GrapheR_4

Sie können Änderungen vornehmen und nach dem erneuten Drücken der Schaltfläche DRAW wird die Grafik entsprechend aktualisiert. Die GrapheR-GUI bietet noch viele Möglichkeiten, betrachten Sie obige Ausführungen als Appetithappen!

Gefällt Ihnen die GrapheR-GUI können Sie sie mit dem Start der R-GUI in das R-Menü einbinden und so per Mausklick direkt ausführen. Ein Beispiel, wie das bewerkstelligen finden Sie hier!

 

Gplot-Dokumentation

Seitenanfang

Daten-management

dplyr

Das Paket dplyr bietet hilfreiche Funktionen zur Datenbearbeitung an. Die dplyr-Funktionen wurden aus Sicht des Anwenders entwickelt.  Aus dieser Sicht, erscheint die Anwendung der Funktionen und deren möglichen Argumente einfacher. Hier finden Sie ein Einführungsvideo zum Paket und nachfolgend die Video-Anwendungsbeispiele in Textform auf Basis des mtcars-Datensatzes:

    > data.frame(mtcars)
                          mpg cyl  disp  hp  drat    wt  qsec  vs am gear carb
    Mazda RX4           21.0   6   160.0 110 3.90  2.620 16.46  0  1   4    4
    Mazda RX4 Wag       21.0   6   160.0 110 3.90  2.875 17.02  0  1   4    4
    Datsun 710          22.8   4   108.0 93  3.85  2.320 18.61  1  1   4    1
    Hornet 4 Drive      21.4   6   258.0 110 3.08  3.215 19.44  1  0   3    1
    Hornet Sportabout   18.7   8   360.0 175 3.15  3.440 17.02  0  0   3    2
    Valiant             18.1   6   225.0 105 2.76  3.460 20.22  1  0   3    1
    Duster 360          14.3   8   360.0 245 3.21  3.570 15.84  0  0   3    4
    Merc 240D           24.4   4   146.7 62  ...

Obiger Beispieldatensatz wird oft verwendet, wie aber durch Fragen in diversen Foren ersichtlich, ist die Bedeutung der einzelnen Variablen nicht immer klar. Deswegen hier eine kurze Ergänzung der Legende:

      mpg

      Miles/(US) gallon

      cyl

      Number of cylinders

      disp

      Displacement (cu.in.)  Hubraum

      hp

      Gross horsepower  brutto SAE-PS

      drat

      Rear axle ratio  Übersetzungsverhältnis

      wt

      Weight (1000 lbs)

      qsec

      1/4 mile time Beschleunigungszeit um 1/4 Meile zu erreichen

      vs

      V/S V-Motor oder Reihenmotor

      am

      Transmission (0 = automatic, 1 = manual)

      gear

      Number of forward gears

      carb

      Number of carburetors  Anzahl Vergaser

Um die dplyr-Funktion nutzen zu können, muss eine dplyr-Tabelle über die Funktion tbl_df() angelegt werden.

    > carData <- tbl_df(mtcars)
    > carData
    Source: local data frame [32 x 11]

         mpg  cyl  disp    hp   drat    wt    qsec     vs    am    gear  carb
       (dbl) (dbl) (dbl) (dbl)  (dbl)  (dbl)  (dbl)   (dbl) (dbl) (dbl) (dbl)
    1   21.0    6  160.0   110  3.90   2.620  16.46    0     1     4     4
    2   21.0    6  160.0   110  3.90   2.875  17.02    0     1     4     4
    3   22.8    4  108.0    93  3.85   2.320  18.61    1     1     4     1
    4   21.4    6  258.0   110  3.08   3.215  19.44    1     0     3     1
    5   18.7    8  360.0   175  3.15   3.440  17.02    0     0     3     2
    6   18.1    6  225.0   105  2.76   3.460  20.22    1     0     3     1
    7   14.3    8  360.0   245  3.21   3.570  15.84    0     0     3     4
    8   24.4    4  146.7    62  3.69   3.190  20.00    1     0     4     2
    9   22.8    4  140.8    95  3.92   3.150  22.90    1     0     4     2
    10  19.2    6  167.6   123  3.92   3.440  18.30    1     0     4     4
    ..   ...  ...   ...    ...  ...    ...    ...    ...    ...   ...  ...

Auffällig ist, dass das Beobachtungsobjekt in dieser Tabellenform nicht mehr angezeigt wird (Mazda RX4 = 1). Erfreulich ist, dass das Variablenformat (mpg = dbl) angezeigt wird.
Steigen wir mit der ersten dplyr-Funktion ein und lassen uns die Beobachtungen der Größe aufsteigen nach carb und dann nach cyl auf dem Bildschirm ausgeben (Sortieren). Das erreichen wir über die Funktion arrange(carData, carb, cyl):

    > arrange(carData, carb, cyl)
    Source: local data frame [32 x 11]

          mpg    cyl  disp   hp    drat  wt    qsec   vs    am   gear  carb
          (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)  (dbl) (dbl) (dbl) (dbl)
    1     22.8   4    108.0  93    3.85  2.320 18.61  1     1     4     1
    2     32.4   4     78.7  66    4.08  2.200 19.47  1     1     4     1
    3     33.9   4     71.1  65    4.22  1.835 19.90  1     1     4     1
    4     21.5   4    120.1  97    3.70  2.465 20.01  1     0     3     1
    5     27.3   4     79.0  66    4.08  1.935 18.90  1     1     4     1
    6     21.4   6    258.0  110   3.08  3.215 19.44  1     0     3     1
    7     18.1   6    225.0  105   2.76  3.460 20.22  1     0     3     1
    8     24.4   4    146.7  62    3.69  3.190 20.00  1     0     4     2
    9     22.8   4    140.8  95    3.92  3.150 22.90  1     0     4     2
    10    30.4   4     75.7  52    4.93  1.615 18.52  1     1     4     2

    ..    ...   ...   ...    ...   ...   ...   ...  ...   ...   ...  …

Die Reihenfolge der Sortier-Argumente legt die Sortierreihenfolge fest. Eine absteigende Sortierreihenfolge wird durch ein “-”-Zeichen vor dem Sortier-Argument festgelegt (z. B. -cyl).

Die Bildung von Subsets (Untermengen) aufgrund von Merkmalsausprägungen wird im dplyr-Umfeld filtern genannt:

    > cyl4 <- filter(carData, cyl == 4)
    > cyl4

    Source: local data frame [11 x 11]

          mpg   cyl   disp    hp    drat    wt    qsec   vs    am    gear  carb
         (dbl) (dbl) (dbl)   (dbl) (dbl)   (dbl)  (dbl)  (dbl) (dbl) (dbl) (dbl)
    1   22.8    4    108.0    93    3.85    2.320 18.61   1    1     4     1
    2   24.4    4    146.7    62    3.69    3.190 20.00   1    0     4     2
    3   22.8    4    140.8    95    3.92    3.150 22.90   1    0     4     2
    4   32.4    4    78.7    ...    ...     ...   ...     ...  ...   ...   ...
    5   ...     ...

Elegant ist die Bildung von Subsets über logische Verknüpfungen:

    > cyl4 <- filter(carData, cyl == 4, gear == 5)
    > cyl4

    Source: local data frame [2 x 11]

         mpg   cyl   disp   hp    drat    wt     qsec    vs    am    gear  carb
        (dbl) (dbl) (dbl)  (dbl) (dbl)   (dbl)  (dbl)   (dbl) (dbl) (dbl) (dbl)
    1   26.0    4    120.3  91    4.43   2.140   16.7     0    1     5     2
    2   30.4    4     95.1 113    3.77   1.513   16.9     1    1     5     2

Einzelne Variablen (Spalten) des Datensatzes (der Tabelle) können über die Funktion select() selektiert werden:

    > Auswahl <- select(carData, mpg, wt, cyl)
    > Auswahl

    Source: local data frame [32 x 3]

          mpg   wt   cyl
         (dbl) (dbl) (dbl)
    1    21.0  2.620  6
    2    21.0  2.875  6
    3    22.8  2.320  4
    4    21.4  3.215  6
    5    18.7  3.440  8
    ..   ...   ...    ...

Werden Merkmale mit einem Minus versehen, z. B. -wt, wird wt von der Selektion ausgeschlossen! Die Funktion select bietet noch eine Reihe sehr nützlicher Funktionsargumente an, siehe ?select.

Auch lassen sich in dem Datensatz elegant neue Variablen (Spalten) einfügen. Dazu dient die Funktion mutate. Die Spalten type (beobachtetes Objekt) und pwr2wt (als berechnete Merkmalsausprägung) werden über mutate() eingefügt:

    > NSp_carData <- mutate(carData, type = rownames(mtcars), pwr2wt = hp/wt)
    > NSp_carData

    Source: local data frame [32 x 13]

          mpg   cyl   disp    hp    drat    wt    qsec   vs    am    gear  carb              type    pwr2wt
         (dbl) (dbl) (dbl)   (dbl) (dbl)   (dbl) (dbl)  (dbl) (dbl) (dbl) (dbl)             (chr)   (dbl)
    1    21.0    6    160.0   110  3.90    2.620  16.46  0     1     4     4            Mazda RX4   41.98473
    2    21.0    6    160.0   110  3.90    2.875  17.02  0     1     4     4        Mazda RX4 Wag   38.26087
    3    22.8    4    108.0    93  3.85    2.320  18.61  1     1     4     1           Datsun 710   40.08621
    4    21.4    6    258.0   110  3.08    3.215  19.44  1     0     3     1       Hornet 4 Drive   34.21462
    ..   ...   ...    ...     ...  ...      ...   ...  ...   ...   ...    ...               ...      ...

Spalten können gelöscht werden, indem ihnen der Wert NULL zugewiesen wird:

    > NSp_carData <- mutate(carData, type = rownames(mtcars), pwr2wt = NULL)
    > NSp_carData

    Source: local data frame [32 x 12]

         mpg   cyl   disp    hp    drat    wt    qsec   vs    am    gear  carb              type
        (dbl) (dbl) (dbl)   (dbl) (dbl)   (dbl) (dbl)  (dbl) (dbl) (dbl) (dbl)             (chr)
    1   21.0    6    160.0   110   3.90    2.620 16.46   0    1     4     4              Mazda RX4
    2   21.0    6    160.0   110   3.90    2.875 17.02   0    1     4     4          Mazda RX4 Wag
    ..   ...   ...   ...     ...   ...     ...   ...    ...   ...   ...  ...               ...

Um Tabellen zu vereinigen, werden join-Funktionen angeboten. Um einen vollständigen Überblick über die join-Funktion zu bekommen, siehe ?join.
Hier ein Beispiel, um Tabelleninhalte über eine Datensatz-ID mit semi_join() zusammenzuführen:

    > Daten_1 <- data.frame(ID = c(1, 2, 3), Groesse = c(178, 170, 185))
    > Daten_2 <- data.frame(ID = c(1, 2, 3), Gewicht = c(75, 80, 100))
    > Daten_1
     
    ID Groesse
    1  1    178
    2  2    170
    3  3    185
    > Daten_2
      ID Gewicht
    1  1     75
    2  2     80
    3  3    100
    > # Über die ID werden beide Tabellen mit semi_join zusammengeführt:
    > semi_join(Daten_1, Daten_2,  by = "ID")
      ID Groesse
    1  1    178
    2  2    170
    3  3    185

Es wird auf die Daten mit gleicher ID verwiesen. ID = 1 verweist auf 178 in Daten_1 und auf 75 in Daten_2.

Daten mit gleicher ID in einer Tabelle mit inner_join() zusammenführen:

    > Daten_3 <- inner_join(Daten_1, Daten_2, by = "ID")
    > Daten_3
      ID Groesse Gewicht
    1  1    178      75
    2  2    170      80
    3  3    185     100

Als letztes Beispiel zu den dplyr-Funktionalitäten wird die Parameterschätzung , Mittelwert- und Median-Schätzung, über die summarize()-Funktion gezeigt:

    > summarize(carData, min(mpg), median(mpg), mean(mpg), max(mpg))
    Source: local data frame [1 x 4]

       min(mpg) median(mpg) mean(mpg) max(mpg)
         (dbl)      (dbl)     (dbl)    (dbl)
    1     10.4       19.2  20.09062     33.9

Das dplyr-Paket bietet noch weitere zahlreiche und hilfreiche Funktionen an. Empfehlen möchte ich natürlich die R-Hilfe zum Paket und das hier erwähnte Buch.

 

 

Seitenanfang

Daten-
management

data.table

Das data.table-Paket ist ein "altes" und der R-Gemeinde etabliertes Paket zur Datenbearbeitung. Das Paket wurde designt, um große Datenmengen schnell und effektiv zu bearbeiten. Als Beispieldaten dient die Datei flights14.csv (zip-Datei, ca. 5 MB) die über 250 Tausend Zeilen mit Fluginformationen der New Yorker Flughäfen beinhaltet. Die folgenden Beispiele zeigen die Möglichkeiten des data.table-Pakets. Es wird davon ausgegangen, dass das Paket in die R-Umgebung geladen wurde.

Noch ein Hinweis: Hier finden Sie die folgende Beschreibung auch als Video!

Mit der Funktion fread() wird die Datei flights14.csv in die R-Umgebung geladen

    > Flugdaten <- fread("flights14.csv")
    > str(Flugdaten)
    Classes ‘data.table’ and 'data.frame':  253316 obs. of  17 variables:
     $ year     : int  2014 2014 2014 2014 2014 2014 2014 2014 2014 2014 ...
     $ month    : int  1 1 1 1 1 1 1 1 1 1 ...
     $ day      : int  1 1 1 1 1 1 1 1 1 1 ...
     $ dep_time : int  914 1157 1902 722 1347 1824 2133 1542 1509 1848 ...
     $ dep_delay: int  14 -3 2 -8 2 4 -2 -3 -1 -2 ...
     $ arr_time : int  1238 1523 2224 1014 1706 2145 37 1906 1828 2206 ...
     $ arr_delay: int  13 13 9 -26 1 0 -18 -14 -17 -14 ...
     $ cancelled: int  0 0 0 0 0 0 0 0 0 0 ...
     $ carrier  : chr  "AA" "AA" "AA" "AA" ...
     $ tailnum  : chr  "N338AA" "N335AA" "N327AA" "N3EHAA" ...
     $ flight   : int  1 3 21 29 117 119 185 133 145 235 ...
     $ origin   : chr  "JFK" "JFK" "JFK" "LGA" ...
     $ dest     : chr  "LAX" "LAX" "LAX" "PBI" ...
     $ air_time : int  359 363 351 157 350 339 338 356 161 349 ...
     $ distance : int  2475 2475 2475 1035 2475 2454 2475 2475 1089 2422 ...
     $ hour     : int  9 11 19 7 13 18 21 15 15 18 ...
     $ min      : int  14 57 2 22 47 24 33 42 9 48 ...
     - attr(*, ".internal.selfref")=<externalptr>

Flugdaten beinhaltet die eingelesenen Daten und ist ein Objekt der Klasse data.table. Diese Datenobjekt ist notwendig, um die data.table- Funktionalitäten nutzen zu können. Über die Funktion data.table() kann direkt verwendet werden,  um Datentabellen zu erzeugen:

    > DT_mtcars <- data.table(mtcars)
    > str(DT_mtcars)
    Classes ‘data.table’ and 'data.frame':  32 obs. of  11 variables:
     $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
     $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
     $ disp: num  160 160 108 258 360 ...
     $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
     $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
     $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
     $ qsec: num  16.5 17 18.6 19.4 17 ...
     $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
     $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
     $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
     $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
     - attr(*, ".internal.selfref")=<externalptr>

Über die Funktion tables() können Sie sich einen Überblick über die angelegten / vorhandenen data.table-Objekte (kurz Datentabellen) verschaffen:

    > tables()
         NAME         NROW NCOL MB COLS                                                                             KEY
    [1,] DT_mtcars      32   11  1 mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb                                       
    [2,] Flugdaten 253,316   17 21 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f   
    Total: 22MB

Es werden die 2 angelegten Datentabellen inklusive der Anzahl Zeilen und Spalten wird auch die Größe der Tabellen ausgegeben. Es fehlt auch nicht die Angabe über den Speicherbedarf aller Datentabellen (hier 22 MB).

Geben Sie Flugdaten auf der R-Konsole ein, werden bei großen Datenmengen die ersten 5 und die letzten 5 Datenzeilen auf der Konsole ausgegeben:

    > Flugdaten
            year month day dep_time dep_delay arr_time arr_delay cancelled carrier tailnum flight origin dest air_time distance hour min
         1: 2014     1   1      914        14     1238        13         0      AA  N338AA      1    JFK  LAX      359     2475    9  14
         2: 2014     1   1     1157        -3     1523        13         0      AA  N335AA      3    JFK  LAX      363     2475   11  57
         3: 2014     1   1     1902         2     2224         9         0      AA  N327AA     21    JFK  LAX      351     2475   19   2
         4: 2014     1   1      722        -8     1014       -26         0      AA  N3EHAA     29    LGA  PBI      157     1035    7  22
         5: 2014     1   1     1347         2     1706         1         0      AA  N319AA    117    JFK  LAX      350     2475   13  47
        ---                                                                                                                            
    253312: 2014    10  31     1459         1     1747       -30         0      UA  N23708   1744    LGA  IAH      201     1416   14  59
    253313: 2014    10  31      854        -5     1147       -14         0      UA  N33132   1758    EWR  IAH      189     1400    8  54
    253314: 2014    10  31     1102        -8     1311        16         0      MQ  N827MQ   3591    LGA  RDU       83      431   11   2
    253315: 2014    10  31     1106        -4     1325        15         0      MQ  N511MQ   3592    LGA  DTW       75      502   11   6
    253316: 2014    10  31      824        -5     1045         1         0      MQ  N813MQ   3599    LGA  SDF      110      659    8  24

Bei  Datensätzen unter 100 Zeilen, wird der gesamte Datensatz auf der Konsole ausgegeben.

Zur Datenbearbeitung gehört natürlich dass durchführen von Abfragen  möchten. Dazu bietet uns data.table das Key-Konzept an, dass Sie vielleicht aus dem Bereich der relationalen Datenbanken kennen. Bevor wir Abfragen nach dem Key-Konzept durchführen, hier noch einmal der klassische R- Weg:
In dem folgenden Beispiel selektieren wir alle Daten des Luftfahrtunternehmens American Airlines (abgelegt in unter dem Merkmal carrier)  und legen sie in dem neuen Objekt Flugdaten_AA ab:

    > Flugdaten_AA <- Flugdaten[carrier == "AA"]
    > Flugdaten_AA
           year month day dep_time dep_delay arr_time arr_delay cancelled carrier tailnum flight origin dest air_time distance hour min
        1: 2014     1   1      914        14     1238        13         0      AA  N338AA      1    JFK  LAX      359     2475    9  14
        2: 2014     1   1     1157        -3     1523        13         0      AA  N335AA      3    JFK  LAX      363     2475   11  57
        3: 2014     1   1     1902         2     2224         9         0      AA  N327AA     21    JFK  LAX      351     2475   19   2
        4: 2014     1   1      722        -8     1014       -26         0      AA  N3EHAA     29    LGA  PBI      157     1035    7  22
        5: 2014     1   1     1347         2     1706         1         0      AA  N319AA    117    JFK  LAX      350     2475   13  47
       ---                                                                                                                            
    26298: 2014    10  31     1913        -2     2212       -16         0      AA  N3LFAA   2455    LGA  MIA      156     1096   19  13
    26299: 2014    10  31     1636        -4     1914       -16         0      AA  N4XGAA   2488    EWR  DFW      192     1372   16  36
    26300: 2014    10  31      656        -4      943        -7         0      AA  N3DMAA   2493    JFK  MCO      135      944    6  56
    26301: 2014    10  31     1944        29     2232         4         0      AA  N5FSAA   2387    JFK  MIA      146     1089   19  44
    26302: 2014    10  31     1539        -3     1708        -2         0      AA  N3HAAA   1029    JFK  DCA       51      213   15  39

    > tables()
         NAME            NROW NCOL MB COLS                                                                             KEY
    [1,] DT_mtcars         32   11  1 mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb                                       
    [2,] Flugdaten    253,316   17 22 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f   
    [3,] Flugdaten_AA  26,302   17  3 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f   
    Total: 26MB

Diese Art der Selektion kommt Ihnen bekannt vor. Durch die Vergabe eines Keys, eines Schlüssels, kann die Abfrage performanter und eleganter durchgeführt werden. Die Voraussetzung ist, dass vorher für die Spalte (das Merkmal)  carrier ein Schlüssel über die Funktion setkey() vergeben wird:

    > setkey(Flugdaten, carrier)

Die Selektion führen wir jetzt über diesen Key - wie angedeutet - eleganter durch:

    > Flugdaten_AA <- Flugdaten["AA"]
    > Flugdaten_AA
           year month day dep_time dep_delay arr_time arr_delay cancelled carrier tailnum flight origin dest air_time distance hour min
        1: 2014     1   1      914        14     1238        13         0      AA  N338AA      1    JFK  LAX      359     2475    9  14
        2: 2014     1   1     1157        -3     1523        13         0      AA  N335AA      3    JFK  LAX      363     2475   11  57
        3: 2014     1   1     1902         2     2224         9         0      AA  N327AA     21    JFK  LAX      351     2475   19   2
        4: 2014     1   1      722        -8     1014       -26         0      AA  N3EHAA     29    LGA  PBI      157     1035    7  22
        5: 2014     1   1     1347         2     1706         1         0      AA  N319AA    117    JFK  LAX      350     2475   13  47
       ---                                                                                                                            
    26298: 2014    10  31     1913        -2     2212       -16         0      AA  N3LFAA   2455    LGA  MIA      156     1096   19  13
    26299: 2014    10  31     1636        -4     1914       -16         0      AA  N4XGAA   2488    EWR  DFW      192     1372   16  36
    26300: 2014    10  31      656        -4      943        -7         0      AA  N3DMAA   2493    JFK  MCO      135      944    6  56
    26301: 2014    10  31     1944        29     2232         4         0      AA  N5FSAA   2387    JFK  MIA      146     1089   19  44
    26302: 2014    10  31     1539        -3     1708        -2         0      AA  N3HAAA   1029    JFK  DCA       51      213   15  39

Die Funktion tables() zeigt nun auch die Verwendung eines Schlüssels an (gelbe Markierung):

    > tables()
         NAME            NROW NCOL MB COLS                                                                             KEY   
    [1,] DT_mtcars         32   11  1 mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb                                           
    [2,] Flugdaten    253,316   17 21 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier
    [3,] Flugdaten_AA  26,302   17  3 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier
    Total: 25MB

Es können mehrere Schlüssel pro Tabelle vergeben werden, z. B. für das Luftfahrtunternehmen (carrier) und den Abflugflughafen (origin):

    > setkey(Flugdaten, carrier, origin)
    > tables()
         NAME            NROW NCOL MB COLS                                                                             KEY          
    [1,] DT_mtcars         32   11  1 mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb                                                  
    [2,] Flugdaten    253,316   17 21 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier,origin
    [3,] Flugdaten_AA  26,302   17  3 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier      
    Total: 25MB

Möchten Sie prüfen welche Schlüssel für eine bestimmte Tabelle angelegt wurden, hilft die Funktion key(Datentabelle) weiter:

    > > key(Flugdaten)
    [1] "carrier" "origin"

Abfragen können klassisch über das data.table-Objekt Flugdaten wie folgt durchgeführt werden…

    > Flugdaten[carrier == "VX" & origin == "JFK"]
          year month day dep_time dep_delay arr_time arr_delay cancelled carrier tailnum flight origin dest air_time distance hour min
       1: 2014     1   1      730         0     1056       -14         0      VX  N361VA     11    JFK  SFO      364     2586    7  30
       2: 2014     1   1     1030        -5     1417        12         0      VX  N628VA     23    JFK  SFO      385     2586   10  30
       3: 2014     1   1      957        12     1306        31         0      VX  N842VA    251    JFK  LAS      344     2248    9  57
       4: 2014     1   1     1631         1     2008        -2         0      VX  N854VA     27    JFK  SFO      374     2586   16  31
       5: 2014     1   1     1859         4     2239         4         0      VX  N623VA     29    JFK  SFO      371     2586   18  59
      ---                                                                                                                            
    3134: 2014    10  31      714        14     1010        -5         0      VX  N636VA    399    JFK  LAX      326     2475    7  14
    3135: 2014    10  31      913        -7     1153       -42         0      VX  N634VA    407    JFK  LAX      318     2475    9  13
    3136: 2014    10  31     1259        -1     1548       -22         0      VX  N625VA    411    JFK  LAX      330     2475   12  59
    3137: 2014    10  31     1655         0     1949       -26         0      VX  N843VA    413    JFK  LAX      327     2475   16  55
    3138: 2014    10  31     2001        -4     2311        -9         0      VX  N624VA    415    JFK  LAX      327     2475   20   1

… oder über die Verwendung der Schlüssel. Auf Basis der Schlüssel ist es über die J(oin)-Funktion nur noch notwendig, die Fluggesellschaft "VX" und den Abflugflughafen "JFK" anzugeben:

    > Flugdaten[J("VX", "JFK")]
          year month day dep_time dep_delay arr_time arr_delay cancelled carrier tailnum flight origin dest air_time distance hour min
       1: 2014     1   1      730         0     1056       -14         0      VX  N361VA     11    JFK  SFO      364     2586    7  30
       2: 2014     1   1     1030        -5     1417        12         0      VX  N628VA     23    JFK  SFO      385     2586   10  30
       3: 2014     1   1      957        12     1306        31         0      VX  N842VA    251    JFK  LAS      344     2248    9  57
       4: 2014     1   1     1631         1     2008        -2         0      VX  N854VA     27    JFK  SFO      374     2586   16  31
       5: 2014     1   1     1859         4     2239         4         0      VX  N623VA     29    JFK  SFO      371     2586   18  59
      ---                                                                                                                            
    3134: 2014    10  31      714        14     1010        -5         0      VX  N636VA    399    JFK  LAX      326     2475    7  14
    3135: 2014    10  31      913        -7     1153       -42         0      VX  N634VA    407    JFK  LAX      318     2475    9  13
    3136: 2014    10  31     1259        -1     1548       -22         0      VX  N625VA    411    JFK  LAX      330     2475   12  59
    3137: 2014    10  31     1655         0     1949       -26         0      VX  N843VA    413    JFK  LAX      327     2475   16  55
    3138: 2014    10  31     2001        -4     2311        -9         0      VX  N624VA    415    JFK  LAX      327     2475   20   1

Abfragen nach dem Key-Konzept lassen sich auch auf numerische Werte ausbauen. Um ein Beispiel zu konstruieren, nehmen wir die Variable air_time als Key hinzu:

    > setkey(Flugdaten, carrier, origin, air_time)

Wir wollen neben Fluggesellschaft, Abflugflughafen die Flugzeit (air_time) auf 318 bis 320 Minuten begrenzt selektieren. Die Flugzeit wird als Vektor an die Join-Funktion übergeben:

    > Flugdaten[J("VX", "JFK", c(318, 320))]
         year month day dep_time dep_delay arr_time arr_delay cancelled carrier tailnum flight origin dest air_time distance hour min
      1: 2014     1  21      937         2     1237         2         0      VX  N837VA    251    JFK  LAS      318     2248    9  37
      2: 2014     2  12      939         4     1220       -15         0      VX  N837VA    251    JFK  LAS      318     2248    9  39
      3: 2014     3  19      926        -9     1205       -20         0      VX  N835VA    251    JFK  LAS      318     2248    9  26
      4: 2014     3  29      934        -1     1214       -11         0      VX  N846VA    251    JFK  LAS      318     2248    9  34
      5: 2014     4  20      656        -4      935       -40         0      VX  N633VA    399    JFK  LAX      318     2475    6  56
     ---                                                                                                                            
     99: 2014    10  11     1639         9     1946        -4         0      VX  N629VA    413    JFK  LAX      320     2475   16  39
    100: 2014    10  15      924        -6     1231       -14         0      VX  N627VA    407    JFK  LAX      320     2475    9  24
    101: 2014    10  20      705         5      958       -17         0      VX  N633VA    399    JFK  LAX      320     2475    7   5
    102: 2014    10  20     1131         1     1413       -22         0      VX  N841VA    409    JFK  LAX      320     2475   11  31
    103: 2014    10  23     1629        -1     1927       -23         0      VX  N840VA    413    JFK  LAX      320     2475   16  29

Über das by-Argument können Gruppierungen für Merkmale durchgeführt werden. Möchten Sie z. B. wissen, wie hoch die gesamte Verspätungszeit für die einzelnen Fluggesellschaften ist, lässt sich das sehr schnell und bequem über die Funktion sum() in Verbindung mit dem by-Argument ermitteln:

    > Flugdaten[,sum(arr_delay), by = carrier]
        carrier     V1
     1:      AA 143703
     2:      AS  -2232
     3:      B6 452906
     4:      DL 214887
     5:      EV 526465
     6:      F9  12586
     7:      FL  17105
     8:      HA   3237
     9:      MQ 176232
    10:      OO   2965
    11:      UA 349988
    12:      US  16746
    13:      VX  15591
    14:      WN 133511

Die Variable arr_delay beinhaltet die Verspätungszeit für den Abflug und die Variable carrier steht für die Fluggesellschaft. V1 beinhaltet die summierte Verspätungszeit für die zugeordnete Fluggesellschaft. Natürlich lassen sich Gruppierungen für mehrere Merkmale durchführen:

    > Flugdaten[, list(SummeVerspäteterAbflug = sum(arr_delay),MWVerspäteterAbflug = mean(arr_delay)), by = carrier]
        carrier SummeVerspäteterAbflug MWVerspäteterAbflug
     1:      AA                 143703           5.4635769
     2:      AS                  -2232          -3.8885017
     3:      B6                 452906          10.1824681
     4:      DL                 214887           5.1552671
     5:      EV                 526465          13.2214521
     6:      F9                  12586          26.6088795
     7:      FL                  17105          13.6730616
     8:      HA                   3237          12.4500000
     9:      MQ                 176232           9.4957702
    10:      OO                   2965          14.8250000
    11:      UA                 349988           7.5645276
    12:      US                  16746           0.9997612
    13:      VX                  15591           3.2501563
    14:      WN                 133511          11.2175265

Fügen wir jetzt noch das Argument .N ein werden die Zeilen pro Fluggesellschaft gezählt und ausgegeben:

    > Flugdaten[, list(SummeVerspäteterAbflug = sum(arr_delay),MWVerspäteterAbflug = mean(arr_delay), .N), by = carrier]
        carrier SummeVerspäteterAbflug MWVerspäteterAbflug     N
     1:      AA                 143703           5.4635769 26302
     2:      AS                  -2232          -3.8885017   574
     3:      B6                 452906          10.1824681 44479
     4:      DL                 214887           5.1552671 41683
     5:      EV                 526465          13.2214521 39819
     6:      F9                  12586          26.6088795   473
     7:      FL                  17105          13.6730616  1251
     8:      HA                   3237          12.4500000   260
     9:      MQ                 176232           9.4957702 18559
    10:      OO                   2965          14.8250000   200
    11:      UA                 349988           7.5645276 46267
    12:      US                  16746           0.9997612 16750
    13:      VX                  15591           3.2501563  4797
    14:      WN                 133511          11.2175265 11902

Das Paket data.table bietet Funktionen zur Erweiterung der Datentabellen an. Um ein Beispiel zu konstruieren, legen wir eine neue Datentabelle über die Merkmale carrier, origin und dest(ination) an:

    > setkey(Flugdaten, carrier, origin, dest)
    > Daten_AA_EWR_MIA <- Flugdaten[J("AA", "EWR", "MIA")]
    > Daten_AA_EWR_MIA
         year month day dep_time dep_delay arr_time arr_delay cancelled carrier tailnum flight origin dest air_time distance hour min
      1: 2014     5  26     1105        -5     1335       -35         0      AA  N3GSAA   1623    EWR  MIA      130     1085   11   5
      2: 2014     8  24     1921        -9     2156       -40         0      AA  N3KHAA   1410    EWR  MIA      130     1085   19  21
      3: 2014     3   1     1127        -3     1413       -22         0      AA  N3HBAA   1623    EWR  MIA      132     1085   11  27
      4: 2014     6   4     1114         4     1338       -32         0      AA  N3KNAA   1623    EWR  MIA      132     1085   11  14
      5: 2014     5  31     1109        -1     1336       -34         0      AA  N5ELAA   1623    EWR  MIA      133     1085   11   9
     ---                                                                                                                            
    844: 2014     7   2     1117         7     1452        42         0      AA  N3AKAA   1623    EWR  MIA      187     1085   11  17
    845: 2014     7  15     1107        -3     1444        34         0      AA  N3KAAA   1623    EWR  MIA      187     1085   11   7
    846: 2014     1   6     1924       144     2313       173         0      AA  N5DWAA    172    EWR  MIA      192     1085   19  24
    847: 2014     3  29     1736         7     2121        36         0      AA  N635AA   1383    EWR  MIA      199     1085   17  36
    848: 2014     7  21     1100       -10     1538        88         0      AA  N3EPAA   1623    EWR  MIA      209     1085   11   0

Als Beispiel konstruieren wir einen Index aus der tatsächlichen Flugzeit und der mittleren Flugzeit, die in der Index-Berechnung über mean() geschätzt wird:

    > Index <- Daten_AA_EWR_MIA[,air_time] / Daten_AA_EWR_MIA[,mean(air_time)]

Diesen berechneten Index können wir nun leicht über die Zuweisung :=  als zusätzliche Spalte in die Tabelle aufnehmen:

    > Daten_AA_EWR_MIA[, AT_Index := Index]
    > Daten_AA_EWR_MIA
         year month day dep_time dep_delay arr_time arr_delay cancelled carrier tailnum flight origin dest air_time distance hour min  AT_Index
      1: 2014     5  26     1105        -5     1335       -35         0      AA  N3GSAA   1623    EWR  MIA      130     1085   11   5 0.8591022
      2: 2014     8  24     1921        -9     2156       -40         0      AA  N3KHAA   1410    EWR  MIA      130     1085   19  21 0.8591022
      3: 2014     3   1     1127        -3     1413       -22         0      AA  N3HBAA   1623    EWR  MIA      132     1085   11  27 0.8723192
      4: 2014     6   4     1114         4     1338       -32         0      AA  N3KNAA   1623    EWR  MIA      132     1085   11  14 0.8723192
      5: 2014     5  31     1109        -1     1336       -34         0      AA  N5ELAA   1623    EWR  MIA      133     1085   11   9 0.8789277
     ---                                                                                                                                      
    844: 2014     7   2     1117         7     1452        42         0      AA  N3AKAA   1623    EWR  MIA      187     1085   11  17 1.2357855
    845: 2014     7  15     1107        -3     1444        34         0      AA  N3KAAA   1623    EWR  MIA      187     1085   11   7 1.2357855
    846: 2014     1   6     1924       144     2313       173         0      AA  N5DWAA    172    EWR  MIA      192     1085   19  24 1.2688279
    847: 2014     3  29     1736         7     2121        36         0      AA  N635AA   1383    EWR  MIA      199     1085   17  36 1.3150873
    848: 2014     7  21     1100       -10     1538        88         0      AA  N3EPAA   1623    EWR  MIA      209     1085   11   0 1.3811721

Die Funktion tables() die zusätzliche Spalte AT_Index (als Summe, gelbe Markierung):

    > tables()
         NAME                NROW NCOL MB COLS                                                                             KEY               
    [1,] Daten_AA_EWR_MIA     848   18  1 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier,origin,dest
    [2,] DT_mtcars             32   11  1 mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb                                                       
    [3,] Flugdaten        253,316   17 21 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier,origin,dest
    [4,] Flugdaten_AA      26,302   17  3 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier           
    Total: 26MB

Variablen können aus der Tabelle gelöscht werden. Dazu wird der Variable die Ausprägung NULL zugewiesen:

    > Daten_AA_EWR_MIA[, AT_Index := NULL]

Auch können Daten an einer bestehenden Tabelle angehängt werden. Dazu bilden wir Subsets aus 2 Fluggesellschaften über die Variable carrier

    > Flugdaten_AA <- Flugdaten[carrier == "AA"]
    > Flugdaten_MQ <- Flugdaten[carrier == "MQ"]

… und prüfen mit tables():

    > > tables()
         NAME                NROW NCOL MB COLS                                                                             KEY               
    [1,] Daten_AA_EWR_MIA     848   17  1 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier,origin,dest
    [2,] DT_mtcars             32   11  1 mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb                                                       
    [3,] Flugdaten        253,316   17 21 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier,origin,dest
    [4,] Flugdaten_AA      26,302   17  3 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier,origin,dest
    [5,] Flugdaten_MQ      18,559   17  2 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier,origin,dest
    Total: 28MB

Die Struktur der Tabellen Flugdaten_AA und Flugdaten_MQ sind identisch, was das Anfügen der Tabelle Flugdaten_MQ an Flugdaten_AA leicht macht. Dazu verwenden wir die data.table-Funktion rbindlist(), die performanter als die Basisfunktion rbind() ist:

    > Flugdaten_AA_MQ <- rbindlist(list(Flugdaten_AA, Flugdaten_MQ), fill = TRUE)
    > Flugdaten_AA_MQ
           year month day dep_time dep_delay arr_time arr_delay cancelled carrier tailnum flight origin dest air_time distance hour min
        1: 2014     7  11     1738        43     2000        15         0      AA  N4WNAA   2488    EWR  DFW      162     1372   17  38
        2: 2014     7  12      916        -4     1137       -28         0      AA  N566AA   1223    EWR  DFW      165     1372    9  16
        3: 2014     7  12     1653        -2     1926       -19         0      AA  N470AA   2488    EWR  DFW      165     1372   16  53
        4: 2014     7  11     1838       -12     2118       -22         0      AA  N564AA   1691    EWR  DFW      167     1372   18  38
        5: 2014     7  22      913        -7     1132       -33         0      AA  N4YPAA   1223    EWR  DFW      167     1372    9  13
       ---                                                                                                                            
    44857: 2014     2  17     1544         4     1846        36         0      MQ  N532MQ   3553    LGA  XNA      195     1147   15  44
    44858: 2014     2  10      659        -6      945        15         0      MQ  N543MQ   3547    LGA  XNA      196     1147    6  59
    44859: 2014     2   2     1510         0     1748        13         0      MQ  N505MQ   3553    LGA  XNA      198     1147   15  10
    44860: 2014     1   2      718         3     1015        35         0      MQ  N530MQ   3547    LGA  XNA      199     1147    7  18
    44861: 2014    10  21      805        96     1120       161         0      MQ  N521MQ   3547    LGA  XNA      224     1147    8   5

Das Argument fill = TRUE wäre in diesem Beispiel nicht nötig, es ist eine Handlungsanweisung, das fehlende Werte mit NA aufgefüllt werden. Wir prüfen wieder mit tables():

    > tables()
         NAME                NROW NCOL MB COLS                                                                             KEY               
    [1,] Daten_AA_EWR_MIA     848   17  1 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier,origin,dest
    [2,] DT_mtcars             32   11  1 mpg,cyl,disp,hp,drat,wt,qsec,vs,am,gear,carb                                                       
    [3,] Flugdaten        253,316   17 21 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier,origin,dest
    [4,] Flugdaten_AA      26,302   17  3 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier,origin,dest
    [5,] Flugdaten_AA_MQ   44,861   17  4 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f                   
    [6,] Flugdaten_MQ      18,559   17  2 year,month,day,dep_time,dep_delay,arr_time,arr_delay,cancelled,carrier,tailnum,f carrier,origin,dest
    Total: 32MB

Zum Ende sei auch erwähnt, dass die Funktion merge() in einer optimierten Form angeboten wird. Hier wird aber auf die Hilfe verwiesen!

 

 

Seitenanfang

Externe Daten

RODBC

Datenbankverknüpfungen über ODBC

Eine Beschreibung finden Sie hier...!

RODBC-PDF-Dokumentation

Seitenanfang

Externe Daten

 

XLConnect

Über Paket XLConnect können sehr flexibel EXCEL-Dateien eingelesen und geschrieben werden, ohne das MS Excel installiert sein muss! Sie können also Excel-Daten (Tabellen, Bereiche) in die R-Umgebung einlesen, bearbeiten und inklusive möglicher R-Grafiken in die entsprechende (oder einer neuen) Excel-Datei zurückschreiben. Eine Beschreibung der Schnittstelle finden Sie hier als PDF-Datei oder als animierte PowerPoint-Datei!

 

RODBC-PDF-Dokumentation

Seitenanfang

Anwender- oberfläche

 

rpanel

Dieses Paket stellt Ihnen Funktion zum Erstellen eigener Anwenderoberflächen (GUI) zur Verfügung. Damit sind Sie in der Lage, eine Oberfläche mit Schaltflächen und Auswahlmöglichkeiten zu erstellen und in Ihre Funktion zu integrieren.  Damit können Sie dem  Anwender die Anwendung einer vielleicht komplexen Funktion zu erleichtern.

Hier nur ein kurzes Beispiel:

rpanel

rpanel-PDF-Dokumentation

Seitenanfang

Anwender- oberfläche

IDE (Integrated Development Environment = Integrierte Entwicklungs-
umgebung

 

RStudio

RStudio ist eine integrierte Entwicklungsumgebung (IDE) zur R-Anwendung und Programmierung. RStudio ist ein Open-Source-Projekt und läuft unter den wesentlichen OS-Umgebungen wie Windows, Mac und Linux. An dieser Stelle finden Sie keine Anwendungsbeschreibung, sondern nur einen Muntermacher sich mit RStudio zu beschäftigen! Eine ausführliche Beschreibung finden Sie hier!

Die Installation von RStudio ist denkbar einfach! Laden Sie die aktuelle RStudio-Version auf Ihren Rechner und starten wie gewohnt die Installation. Während der Installation erkennt RStudio die installierte R-Version und integriert diese mit dem RStudio-Aufruf. D. h., Sie brauchen nichtsweiter zu tun, als RStudio zu installieren:

RStudio

Integrierte Entwicklungsumgebung bedeutet, dass mit einem Klick R-Code aus dem rechten unteren Datei-Fenster in den integrierten Editor zur Bearbeitung bringen:

RStudio_3

Die Konsolen-Funktionalität steht Ihnen im linken unteren Fenster zur Verfügung. Legen Sie ein Datenobjekt an, wird es Ihnen im oberen rechten Fenster (Workspace)  angezeigt. Rufen Sie zu einer Funktion die Hilfe auf, wird sie im rechten unteren Fenster dargestellt:

RStudio_4

Als Muntermacher soll es bis hier reichen...!

 

Seitenanfang
Seitenanfang

Hat der Inhalt Ihnen weitergeholfen und Sie möchten diese Seiten unterstützen?

Impressum
 

Version vom 17.04.2017