10 Dinge, die Sie in R tun können, die Sie würden in Microsoft Excel getan haben

Die Tabelle ist wahrscheinlich eines der am häufigsten verwendeten PC-Anwendungen - und das aus gutem Grund: Tabellen machen es sehr einfach, Berechnungen und andere Operationen auf Tabellendaten auszuführen. Aber Tabellen stellen einige Risiken auch: Sie sind einfach zu korrupt und sehr schwer zu debuggen. Die gute Nachricht ist, Sie R verwenden, können Sie viele der gleichen Dinge zu tun, die in Tabellen zu tun.

Hinzufügen von Zeilen- und Spaltensummen

Eine Aufgabe, die Sie häufig in einer Tabelle tun kann, ist die Berechnung Zeile oder Spalte Summen. Der einfachste Weg dies zu tun ist, um die Funktionen zu nutzen rowSums () und colSums (). In ähnlicher Weise verwenden rowMeans () und colMeans () zu berechnen Mittel.

Versuchen Sie es auf dem eingebauten in Dataset Iris. Entfernen Sie zuerst die fünfte Spalte, weil sie Text enthält, der die Arten der Iris beschreibt:

> iris.num lt; - Iris [-5]

Dann berechnen Sie die Summe und bedeuten für jede Spalte:

> ColSums (iris.num)> colMeans (iris.num)

Diese beiden Funktionen sind sehr bequem, aber Sie können eine andere Statistik für jede Spalte oder Zeile berechnet werden soll. Es gibt eine einfache Möglichkeit, von Zeilen oder Spalten eines Arrays oder Datenrahmen durchlaufen: die apply () Funktion. Um beispielsweise die mindestens eine Säule zu werden, ist die gleiche wie eine Anwendung min () Funktion auf die zweite Dimension Ihrer Daten:

> Apply (iris.num, 2, min)> gelten (iris.num, 2, max)

Formatieren von Zahlen

Sie können verwenden Format() Ihre Zahlen in hübschen Text, für den Druck bereit zu machen. Diese Funktion übernimmt eine Reihe von Argumenten das Format der Folge zu steuern. Hier sind ein paar:

  • trimmen: Ein logischer Wert. Ob FALSCH, es fügt Leerzeichen nach rechts, um das Ergebnis zu rechtfertigen. Ob WAHR, es unterdrückt die führenden Leerzeichen.

  • Ziffern: Wie viele signifikante Stellen von numerischen Werten zu zeigen.

  • nKleines: Die Mindestanzahl der Stellen nach dem Komma.

Darüber hinaus steuern Sie das Format des Dezimalpunktes mit decimal.mark, die Markierung zwischen den Intervallen Vor das Komma mit big.mark, und die Markierung zwischen den Intervallen nach das Komma mit small.mark.

Zum Beispiel können Sie die Nummer 12345.6789 mit einem Komma als Dezimalpunkt, Leerzeichen als die große Marke und Punkte als kleine Markierung drucken:

> Format (12345.6789, Ziffern = 9, decimal.mark = # 147 - # 148 -, + = big.mark # 147- # 147-, small.mark = # 147 -. # 148-, small.interval = 3) [1] # 147-12 345,678.9 # 148-

Als ein praktisches Beispiel, die mittels einiger Spalten zu berechnen, mtcars und drucken dann die Ergebnisse mit zwei Stellen hinter dem Komma, verwenden Sie die folgenden Schritte aus:

> x lt; - colMeans (mtcars [1: 4])> Format (x, Ziffern = 2, nKleines = 2) mpg Zyl disphp # 147- 20.09 # 148- # 147- 6.19 # 148- # 147-230,72 # 148- # 147-146,69 # 148-

Beachten Sie, dass das Ergebnis nicht mehr eine Zahl, sondern eine Textzeichenfolge. Also, seien Sie vorsichtig, wenn Sie Zahlenformatierung verwenden - dies sollte der letzte Schritt in Ihrer Berichterstattung Workflow sein.

Wenn Sie mit der Programmierung in Sprachen ähnlich wie C oder C ++ vertraut sind, dann auch feststellen, können Sie die sprintf () Funktion nützlich. Dieser Wrapper ermöglicht es Ihnen, Ihre formatierte Zahl direkt in einen String einzufügen.

Hier ist ein Beispiel von Zahlen in Prozent Umwandlung:

> x lt; - seq (0,5, 0,55, 0,01)> sprintf (# 147 -% 1f %% # 148-, 100 * x.) [1] # 147-50,0% # 148- # 147-51,0% # 148- # 147-52,0% # 148- # 147-53,0% # 148- # 147-54,0% # 148- # 147-55,0% # 148-

Das ist, was sie tut: Das erste Argument sprintf () gibt das Format - in diesem Fall # 147-% .1f %%# 148-. Das Format Argument verwendet spezielle Literale, die angeben, dass die Funktion dieses buchstäbliche durch eine Variable ersetzen sollte und einige Formatierungen anwenden. Die Literale beginnen immer mit der % Symbol. So, in diesem Fall % .1f bedeutet die erste angegebene Wert als Festpunktwert mit einer Stelle nach dem Komma zu formatieren und %% eine wörtliche ist, dass Druck ein Mittel %.

Um einige Zahlen als Währung formatiert werden - in diesem Fall Dollar - Verwendung:

> Set.seed (1)> x lt; - 1000 * runif (5)> sprintf (# 147- $% 3.2f # 148-, x) [1] # 147- $ 265,51 # 148- # 147- $ 372,12 # 148- # 147- $ 572,85 # 148- # 147- $ 908,21 # 148- # 147- $ 201,68 # 148-

Das sprintf () Funktion gibt Ihnen eine alternative Möglichkeit, den Wert einer Variablen in eine Kette von einfügen:

> Zeug lt; - c (# 147-Brot # 148-, # 147-Cookies # 148 -)> Preis lt; - c (2,1, 4)> sprintf (# 147-% s Kosten $% 3.2f # 147-, Material, Preis) [1] # 147-Brot kosten $ 2,10 # 147- # 147-Cookies kostet 4,00 $ # 147-

Was hier passiert, ist, dass, weil Sie zwei Vektoren geliefert (mit jeweils zwei Elemente) zu sprintf (), Ihr Ergebnis ist ein Vektor mit zwei Elementen. R-Zyklen durch die Elemente und legt sie in die sprintf () Literale.

Sie können alles tun, mit Paste() und Format() dass Sie tun können, mit sprintf (), so dass Sie nicht wirklich jemals brauchen, es zu benutzen. Aber wenn Sie das tun, kann es Ihren Code vereinfachen.

Sortieren von Daten

So sortieren Sie Daten in R, verwenden Sie die Sortieren() oder Auftrag() Funktionen.

Um den Datenrahmen sortieren mtcars bei der Erhöhung oder Reihenfolge der Kolonne abnimmt hp, benutzen:

> Mit (mtcars, mtcars [bestellen (PS),])> mit (mtcars, mtcars [Ordnung (PS, fallend = TRUE),])

Entscheidungen zu treffen mit, wenn

Tabellen geben Ihnen die Möglichkeit, alle Arten von auszuführen # 147-Was wäre wenn? # 148- analysiert. Eine Möglichkeit, dies zu tun, ist die zu verwenden ob() Funktion in einer Tabelle.

R hat auch die ob() Funktion, aber es ist vor allem für die Flusssteuerung in Ihre Skripte verwendet. Da Sie in der Regel eine Berechnung auf einem gesamten Vektor in R ausführen wollen, ist es in der Regel besser geeignet zur Verwendung der ansonsten() Funktion.

Hier ist ein Beispiel für die Verwendung ansonsten() Autos mit hoher Kraftstoffeffizienz im Datensatz zu identifizieren mtcars:

> mtcars lt; - Transformation (mtcars, + mpgClass = ifelse (mpg lt; bedeuten (mpg), # 147-Low # 148-, # 147-High-# 148 -))> mtcars [mtcars $ mpgClass == # 147-High-# 148-,]

Die Berechnung bedingter Summen

Etwas anderes, das Sie wahrscheinlich eine Menge in Excel ist die Berechnung bedingter Summen und zählt mit den Funktionen haben SUMIF () und countIf ().

Sie können in einer von zwei Möglichkeiten in R das gleiche tun:

  • Benutzen ifelse.

  • das Maß der Interesse an einer Teilmenge der Daten einfach berechnen.

Sagen Sie bitte einen bedingten Mittelwert von Kraftstoffeffizienz zu berechnen wollen in mtcars. Sie tun dies mit der bedeuten() Funktion. Nun wird die Kraftstoffeffizienz für Autos auf beiden Seiten einer Schwelle von 150 PS zu erhalten, versuchen, die folgenden:

> Mit (mtcars, Mittelwert (mpg)) [1] 20,09062> mit (mtcars, bedeuten (mpg [hp lt; 150])) [1] 24,22353> mit (mtcars, bedeuten (mpg [PS> = 150])) [1] 15,40667

Zählen der Anzahl von Elementen in einem Vektor ist derselbe wie etwa seine Länge zu stellen. Dies bedeutet, dass die Excel-Funktion countIf () hat einen R gleichwertig Länge():

> Mit (mtcars, Länge (mpg [PS> 150])) [1] 13

Transponieren Spalten oder Zeilen

Manchmal müssen Sie Ihre Daten aus den Zeilen zu Spalten oder umgekehrt zu übertragen. In R, zur Umsetzung der Funktion eine Matrix t ():

> x lt; - Matrix (01.12, ncol = 3)> x [1] [2] [3] [1] 1 5 9 [2] 2 6 10 [3] 3 7 11 [4 ,] 4 8 12

Um die Transponierung einer Matrix, die Verwendung t ():

> T (x) [1] [2] [3] [4] [1] 1 2 3 4 [2] 5 6 7 8 [3] 9 10 11 12

auch Sie können mit t () zur Umsetzung der Datenrahmen, aber vorsichtig sein, wenn Sie dies tun. Das Ergebnis einer Umsetzung ist immer eine Matrix (oder ein Array). Da Arrays immer nur eine Art von Variable haben, wie ein Zahlen- oder Zeichen, die Variablentypen der Ergebnisse kann nicht sein, was Sie erwarten.

Die Suche nach einzigartigen oder dupliziert Werte

Zur Identifizierung alle eindeutigen Werte in Ihren Daten, verwenden Sie die einzigartig() Funktion. Versuchen Sie, die eindeutige Werte der Anzahl der Zylinder zu finden in mtcars:

> Unique (mtcars $ Zyl) [1] 6 4 8

Manchmal möchte man wissen, welche Werte Ihrer Daten Duplikate sind. Je nach Situation werden diese Duplikate gültig sein, aber manchmal doppelte Einträge Dateneingabeprobleme hinweisen.

Die Funktion doppelte Einträge zu identifizieren dupliziert (). In der Einbau-Dataset Iris, gibt es eine doppelte Zeile in Zeile es 143. Versuchen Sie sich selbst:

> Betrogenen lt; - dupliziert (Iris)> Kopf (Betrogenen) [1] false false false false false false> die (Betrogenen) [1] 143> Iris [Betrogenen,] Sepal.Length Sepal.Width Petal.Length Petal.Width Species143 5.8 2.7 5.1 1.9 virginica

Da das Ergebnis der dupliziert () ist ein logischer Vektor, können Sie es als Index zu entfernen, um Zeilen aus Daten verwenden können. Um dies zu tun, verwenden Sie die Negationsoperator - das Ausrufezeichen (wie in !Betrogenen):

> Iris [! Düpiert,]> nrow (Iris [! Düpiert,]) [1] 149

Arbeiten mit Lookup-Tabellen

In einem Tabellenkalkulationsprogramm wie Excel können Sie Lookup-Tabellen mit den Funktionen erstellen vlookup oder eine Kombination aus Index und Spiel.

In R kann es zweckmäßig sein, zu verwenden, verschmelzen() oder Spiel(). Das Spiel() Funktion gibt einen Vektor mit den Positionen der Elemente, die Ihre Suchwert entsprechen.

Beispielsweise die Position des Elements zu finden, # 147-Toyota Corolla# 148- in den Reihennamen mtcars, versuchen Sie folgendes:

> index lt; - Übereinstimmung (# 147-Toyota Corolla # 148-, rownames (mtcars))> Index [1] 20> mtcars [index, 1: 4] mpg Zyl disp hpToyota Corolla 33.9 4 71.1 65

Arbeiten mit Pivot-Tabellen

Für einfache Tabellen in R, können Sie mit dem tapply () Funktion ähnliche Ergebnisse zu erzielen Tabellen in Excel zu verschwenken. Hier ist ein Beispiel für die Verwendung tapply () zu berechnen Mittelwert hp für Fahrzeuge mit verschiedenen Anzahlen von Zylindern und Gänge:

> Mit (mtcars, tapply (hp, Liste (Zyl, Getriebe), bedeuten)) 3 4 54 97,0000 76,0 102,06 107,5000 116,5 175,08 194,1667 NA 299,5

Für etwas komplexere Tabellen - das heißt, Tabellen mit mehr als zwei Querklassifizierungsfaktoren - verwenden die Aggregat() Funktion:

> Aggregat (hp ~ Zyl + Getriebe + Uhr, mtcars, bedeuten) Zyl Gang amhp1 4 3 0 97,000002 6 3 0 107,500003 8 3 0 194,166674 4 4 0 78,500005 6 4 0 123,000006 4 4 1 75,166677 6 4 1 110,000008 4 5 1 102,000009 6 5 1 175,0000010 8 5 1 299,50000

Mit dem Ziel suchen und Löser

In R, die optimieren() Funktion stellt einen ziemlich einfachen Mechanismus für Funktionen zu optimieren.

Stellen Sie sich der Vertriebsleiter eines Unternehmens sind und Sie benötigen den besten Preis für Ihr Produkt zu setzen. Mit anderen Worten, finden den Preis eines Produkts, das Einnahmen maximiert.

In der Wirtschaft, kaufen ein einfaches Modell der Preisgestaltung heißt es, dass die Menschen weniger von einem bestimmten Produkt, wenn die Preiserhöhungen. Hier ist eine sehr einfache Funktion, die dieses Verhalten hat:

> Vertrieb lt; - Funktion (Preis) {100 - 0.5 * Preis}

Erwartete Einnahmen sind dann einfach das Produkt aus Preis und erwarteten Umsatz:

> Einnahmen lt; - Funktion (Preis) {Preis * Umsatz (Preis)}

Sie können die Verwendung Kurve() Funktion stetige Funktionen zu zeichnen. Dies nimmt eine Funktion als Eingabe und erzeugt einen Plot. Versuchen Sie, das Verhalten der Verkäufe zu planen und Einnahmen mit der Kurve() Funktion, unterschiedlicher Preis von $ 50 bis $ 150:

> oldpar lt; - par (mfrow = c (1, 2), bty = # 147-l # 148 -)> Kurve (Umsatz, von = 50, = 150, xname = # 147-Preis # 148-, main = # 147-Verkauf # 148 -)> Kurve (Umsatz, von = 50, = 150, xname = # 147-Preis # 148-, main = # 147-Umsatz # 148 -)> par (oldpar)

Ihre Ergebnisse sollte ähnlich aussehen.

Ein Modell der erwarteten Umsatz und Ertrag.
Ein Modell der erwarteten Umsatz und Ertrag.

Sie haben ein Arbeitsmodell von Absatz und Umsatz. Sie können sofort sehen, dass es einen Punkt der maximalen Einnahmen. Als nächstes verwenden Sie die R-Funktion optimieren() den Wert dieses Maximum zu finden. Benutzen optimieren(), Sie müssen es sagen, die (in diesem Fall zu verwenden, funktionieren, Einnahmen()) Sowie der Abstand (in diesem Fall die Preise zwischen 50 und 150). In der Standardeinstellung optimieren() sucht nach einem Minimalwert, so dass in diesem Fall, dass Sie es zu sagen, für Maximalwert zu suchen:

> Optimize (Umsatz, c Intervall = (50, 150), Maximum = TRUE) $ maximal [1] 100 $ Ziel [1] 5000

Und los geht. Laden Sie einen Preis von $ 100, und erwarten, dass 5000 $ in Einnahmen zu bekommen.

Menü