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

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 19.03.2017