10 Dinge, die Sie in R tun können, die Sie in Microsoft Excel getan hätten

10 Dinge, die Sie in R tun können, die Sie in Microsoft Excel gemacht hätten - dummies

verwenden können. Die Tabellenkalkulation ist wahrscheinlich eine der am weitesten verbreiteten PC-Anwendungen - und das aus gutem Grund: Tabellenkalkulationen machen es sehr einfach, Berechnungen und andere Operationen auf Tabellen auszuführen. Daten. Aber Tabellenkalkulation birgt auch Risiken: Sie sind leicht zu korrumpieren und sehr schwer zu debuggen. Die gute Nachricht ist, dass Sie R benutzen können, um viele der Dinge zu tun, die Sie früher in Tabellenkalkulationen gemacht haben.

Hinzufügen von Zeilen- und Spaltensummen

Eine Aufgabe, die Sie häufig in einer Tabelle ausführen können, ist das Berechnen von Zeilen- oder Spaltensummen. Am einfachsten verwenden Sie dazu die Funktionen rowSums () und colSums (). Verwenden Sie in ähnlicher Weise rowMeans () und colMeans (), um die Mittelwerte zu berechnen.

Probieren Sie es mit der integrierten Datenblende aus. Entfernen Sie zunächst die fünfte Spalte, da sie Text enthält, der die Art der Iris beschreibt: >> Iris. num <- iris [ -5]

 Berechnen Sie dann die Summe und den Mittelwert für jede Spalte: 

>> colSums (iris. Num)> colMeans (iris. Num)

Diese beiden Funktionen sind sehr bequem, aber Sie können für jede Spalte oder Zeile eine andere Statistik berechnen. Es gibt eine einfache Möglichkeit, Zeilen oder Spalten eines Arrays oder Datenrahmens zu durchlaufen: die Funktion apply (). Zum Beispiel ist das Abrufen des Minimums einer Spalte dasselbe wie das Anwenden einer min () - Funktion auf die zweite Dimension Ihrer Daten: >> anwenden (iris. Num, 2, min)> anwenden (iris. Num, 2, max)
 Formatierungsnummern 

 Sie können format () verwenden, um Ihre Zahlen in hübschen Text umzuwandeln, bereit zum Drucken. Diese Funktion benötigt eine Reihe von Argumenten, um das Format Ihres Ergebnisses zu steuern. Hier sind einige: 

trim

:

Ein logischer Wert. Wenn FALSE, fügt es Leerzeichen hinzu, um das Ergebnis nach rechts zu korrigieren. Wenn TRUE, unterdrückt es die führenden Leerzeichen.

  • Ziffern : Wie viele signifikante Ziffern von numerischen Werten werden angezeigt.

  • nsmall : Die minimale Anzahl von Stellen nach dem Dezimalpunkt.

  • Zusätzlich steuern Sie das Format des Dezimalpunktes mit dezimal. markieren Sie die Marke zwischen den Intervallen vor dem Dezimalpunkt mit groß. markieren, und die Marke zwischen Intervallen

nach der Dezimalpunkt mit klein. Kennzeichen. Sie können z. B. die Zahl 12345. 6789 mit einem Komma als Dezimalpunkt, Leerzeichen als große Marke und Punkte als kleine Marke drucken: Format >> (12345. 6789, Ziffern = 9, Dezimalzahl). mark = ",", + groß. mark = "", klein. mark = ".", klein. intervall = 3) [1] "12 345, 678. 9" Als praktisches Beispiel zur Berechnung die Mittel einiger Spalten in mtcars und dann die Ergebnisse mit zwei Stellen nach dem Dezimalpunkt drucken, verwenden Sie die folgenden: >> x Format (x, Ziffern = 2, nsmall = 2) mpg cyl disp hp "20.09 "" 6. 19 "" 230. 72 "" 146. 69 " Beachten Sie, dass das Ergebnis keine Zahl mehr ist, sondern eine Textzeichenfolge. Seien Sie also vorsichtig, wenn Sie die Zahlenformatierung verwenden - dies sollte der letzte Schritt in Ihrem Berichtsworkflow sein.

Wenn Sie mit der Programmierung in Sprachen vertraut sind, die C oder C ++ ähneln, können Sie die Funktion sprintf () auch nützlich finden. Mit diesem Wrapper können Sie Ihre formatierte Nummer direkt in eine Zeichenfolge einfügen.

 Hier ein Beispiel für die Umwandlung von Zahlen in Prozent:  >> x sprintf ("%. 1f %%", 100 * x) [1] "50. 0% "" 51. 0% "" 52. 0% "" 53. 0% "" 54. 0% "" 55. 0% "

Das macht es: Das erste Argument von sprintf () gibt das Format an - in diesem Fall"%. 1f %% ". Das Formatargument verwendet spezielle Literale, die angeben, dass die Funktion dieses Literal durch eine Variable ersetzen und eine Formatierung anwenden soll. Die Literale beginnen immer mit dem% -Symbol. Also, in diesem Fall%. 1f bedeutet, den ersten übergebenen Wert als festen Punktwert mit einer Nachkommastelle zu formatieren, und %% ist ein Literal, das bedeutet, dass ein% gedruckt wird.

 Um einige Zahlen als Währung zu formatieren - in diesem Fall US-Dollar - verwenden Sie:  >> gesetzt. Samen (1)> x Sprintf ("$% 3. 2f", x) [1] "$ 265. 51" "$ 372. 12" "$ 572. 85" "$ 908. 21" "$ 201. 68 "

Die Funktion sprintf () gibt Ihnen eine alternative Möglichkeit, den Wert einer beliebigen Variable in eine Zeichenfolge einzufügen: >> stuff price sprintf ("% s Kosten $% 3. 2f ", Zeug, Preis) [1 ] "Brot kostet $ 2. 10" "kostet $ 4. 00"

Was hier passiert, ist, dass, weil Sie zwei Vektoren (jeder mit zwei Elementen) zu sprintf () geliefert haben, Ihr Ergebnis ein Vektor mit zwei Elementen ist .. R durchläuft die Elemente und platziert sie in den Sprintf () - Literalen.

Mit paste () und format () können Sie alles machen, was Sie mit sprintf () machen können, so dass Sie es eigentlich nie brauchen. Aber wenn Sie das tun, kann es Ihren Code vereinfachen.

 Daten sortieren 

Um Daten in R zu sortieren, verwenden Sie die Funktionen sort () oder order ().

Um die Datenrahmen-mtcars in aufsteigender oder absteigender Reihenfolge der Spalte hp zu sortieren, verwenden Sie: >> mit (mtcars, mtcars [order (hp),])> mit (mtcars, mtcars [order (hp, fallend) = TRUE),])

 Entscheidungen treffen mit 

Kalkulationstabellen geben Ihnen die Möglichkeit, alle Arten von "Was wäre wenn? "Analysen. Eine Möglichkeit dafür ist die Verwendung der if () - Funktion in einer Tabellenkalkulation.

 R hat auch die Funktion if (), wird aber meistens für die Flusskontrolle in Ihren Skripten verwendet. Da Sie normalerweise eine Berechnung für einen ganzen Vektor in R durchführen möchten, ist es normalerweise besser, die Funktion ifelse () zu verwenden. 

Hier ist ein Beispiel für die Verwendung von ifelse (), um Autos mit hoher Kraftstoffeffizienz im Datensatz mtcars zu identifizieren: >> mtcars <- transform (mtcars, + mpgClass = ifelse (mpg mtcars [mtcars $ mpgClass == "High" ,]

Bedingte Summen berechnen

Etwas anderes, was Sie in Excel wahrscheinlich viel gemacht haben, ist die Berechnung von bedingten Summen und Zählungen mit den Funktionen sumif () und countif ().

Sie können das gleiche in einem der zwei Möglichkeiten in R:

Verwenden Sie ifelse.

 Berechnen Sie einfach das Zinsmaß für eine Teilmenge Ihrer Daten. 

Angenommen, Sie möchten ein konditionales Mittel der Kraftstoffeffizienz in mtcars berechnen. Sie tun dies mit der Funktion mean (). Nun, um die Kraftstoffeffizienz für Autos auf jeder Seite einer Schwelle von 150 PS zu erhalten, versuchen Sie Folgendes: >> mit (MTCAR, Mittelwert (mpg)) [1] 20. 09062> mit (MTCARS, Mittelwert (MPG) hp mit (mtcars, mean (mpg [hp> = 150])) [1] 15. 40667

Die Anzahl der Elemente in einem Vektor zu zählen, ist gleichbedeutend mit der Frage nach ihrer Länge, dh die Excel-Funktion countif ( ) hat ein R-Äquivalent in Länge (): >>) [1] 13

Transponierende Spalten oder Zeilen

Manchmal müssen Sie Ihre Daten aus Zeilen zu Spalten oder umgekehrt In R ist die Funktion zum Transponieren einer Matrix t (): >> xx [ 1] [ 2] [ 3] [1,] 1 5 9 [2,] 2 6 10 [3,] 3 7 11 [4,] 4 8 12

 Um die Transponierung einer Matrix zu erhalten, verwenden Sie t ():  >> t (x) [ 1] [ 2] [ 3] [ 4] [1,] 1 2 3 4 [2,] 5 6 7 8 [3,] 9 10 11 12 

Sie können auch t () verwenden, um Datenrahmen zu transponieren, aber seien Sie vorsichtig, wenn Sie mach das. Das Ergebnis einer Transposition ist immer eine Matrix (oder ein Array), da Arrays immer nur einen Typ haben. von Variable, wie numeric oder character, sind die Variablentypen Ihrer Ergebnisse möglicherweise nicht das, was Sie erwarten.

Ermitteln von eindeutigen oder duplizierten Werten

Verwenden Sie zum Identifizieren aller eindeutigen Werte in Ihren Daten die Funktion unique (). Versuchen Sie, die eindeutigen Werte für die Anzahl der Zylinder in mtcars zu ermitteln: >> unique (mtcars $ cyl) [1] 6 4 8

  • Manchmal möchten Sie wissen, welche Werte Ihrer Daten Duplikate sind. Abhängig von Ihrer Situation sind diese Duplikate gültig, aber manchmal können doppelte Einträge auf Dateneingabeprobleme hindeuten.

  • Die Funktion zum Identifizieren von doppelten Einträgen wird dupliziert (). In der eingebauten Dataset-Iris gibt es in Zeile 143 eine duplizierte Zeile. Probieren Sie es selbst aus: >> dupes head (dupes) [1] FALSE FALSE FALSE FALSE FALSE FALSE> was (dupes) [1] 143> iris [dupes,] Sepal. Länge Sepal. Breite Blütenblatt. Länge Blütenblatt. Width Species 143 5. 8 2. 7 5. 1 1. 9 virginica

Da das Ergebnis von duplicated () ein logischer Vektor ist, können Sie es als Index verwenden, um Zeilen aus Ihren Daten zu entfernen. Verwenden Sie dazu den Negationsoperator - das Ausrufezeichen (wie in! Dupes): >> iris [! dupes,]> nrow (iris [! dupes,]) [1] 149

 Arbeiten mit Nachschlagetabellen 

In einer Tabellenkalkulationsanwendung wie Excel können Sie Nachschlagetabellen mit den Funktionen vlookup oder eine Kombination aus Index und Match erstellen. ..

 In R kann es sinnvoll sein, merge () oder match () zu verwenden. Die Funktion match () gibt einen Vektor mit den Positionen der Elemente zurück, die Ihrem Lookup-Wert entsprechen. 

Um zum Beispiel den Ort des Elements "Toyota Corolla" in den Zeilennamen von mtcars zu finden, versuchen Sie Folgendes: >> index index [1] 20> mtcars [index, 1: 4] mpg cyl disp hp Toyota Corolla 33. 9 4 71. 1 65

Arbeiten mit Pivot-Tabellen

 Für einfache Tabellen in R können Sie mit der Funktion tapply () ähnliche Ergebnisse wie mit Pivot-Tabellen in Excel erzielen.Hier ein Beispiel für die Verwendung von tapply () zur Berechnung der mittleren PS für Fahrzeuge mit unterschiedlicher Anzahl von Zylindern und Getrieben:  >> mit (MTCAR, TAPPLY (PS, ZYL, GANG), Mittelwert) 3 4 5 4 97. 0000 76. 0 102. 0 6 107. 5000 116. 5 175. 0 8 194. 1667 NA 299. 5 

Für etwas komplexere Tabellen - also Tabellen mit mehr als zwei klassifizierenden Faktoren - wird das Aggregat verwendet. () Funktion: >> Aggregat (PS-Zyl. + Getriebe + AM, MTCAR, Mittelwert) Zyl. Getriebe am PS 1 4 3 0 97. 00000 2 6 3 0 107. 50000 3 8 3 0 194. 16667 4 4 4 0 78. 50000 5 6 4 0 123. 00000 6 4 4 1 75. 16667 7 6 4 1 110. 00000 8 4 5 1 102. 00000 9 6 5 1 175. 00000 10 8 5 1 299. 50000

 Verwendung das Ziel suchen und Solver 

In R bietet die Funktion optimize () einen ziemlich einfachen Mechanismus zur Optimierung von Funktionen.

Stellen Sie sich vor, Sie sind der Vertriebsleiter eines Unternehmens und müssen den besten Preis für Ihr Produkt festlegen. Mit anderen Worten: Finden Sie den Preis eines Produkts, das den Umsatz maximiert.

In der Ökonomie besagt ein einfaches Preismodell, dass die Leute bei einem Preisanstieg weniger von einem bestimmten Produkt kaufen. Hier ist eine sehr einfache Funktion, die folgendes Verhalten hat: >> Umsatz <- Funktion (Preis) {100 - 0. 5 * Preis}

 Der erwartete Umsatz ist dann einfach das Produkt aus Preis und erwartetem Umsatz:  >> Umsatz <- Funktion (Preis) {Preis * Verkauf (Preis)} 

Mit der Funktion Kurve () können Sie stetige Funktionen darstellen. Dies nimmt eine Funktion als Eingabe und erzeugt ein Diagramm. Versuchen Sie, das Verhalten von Umsatz und Umsatz mit der curve () - Funktion zu skizzieren, wobei der Preis von $ 50 bis $ 150 variiert: >> oldpar curve (Umsatz, von = 50, bis = 150, xname = "price", main = "Sales ")> Kurve (Umsatz, von = 50, bis = 150, xname =" Preis ", Haupt =" Umsatz ")> Par (Oldpar)

Ihre Ergebnisse sollten ähnlich aussehen.

 Ein Modell der erwarteten Umsätze und Einnahmen. 

Sie haben ein funktionierendes Modell von Umsatz und Umsatz. Sie können sofort sehen, dass es einen Punkt mit maximalem Ertrag gibt. Verwenden Sie als Nächstes die R-Funktion optimize (), um den Wert dieses Maximums zu ermitteln. Um optimize () verwenden zu können, müssen Sie ihm die zu verwendende Funktion (in diesem Fall revenue ()) sowie das Intervall (in diesem Fall Preise zwischen 50 und 150) mitteilen. Standardmäßig sucht optimize () nach einem minimalen Wert. In diesem Fall müssen Sie also nach dem maximalen Wert suchen: >> optimieren (Umsatz, Intervall = c (50, 150), Maximum = TRUE) $ maximum [1] 100 $ objektiv [1] 5000

 Und los gehts. Laden Sie einen Preis von $ 100 auf und erwarten Sie einen Umsatz von $ 5.000.