Inhoudsopgave:
- Rij- en kolomtotalen
- trim
- Iets anders dat u waarschijnlijk veel hebt gedaan in Excel, is het berekenen van voorwaardelijke sommen en telt met de functies sumif () en countif ().
- Stel dat u een voorwaardelijk gemiddelde van brandstofefficiëntie in mtcars wilt berekenen. U doet dit met de functie mean (). Om het brandstofrendement voor auto's aan beide zijden van een drempel van 150 pk te krijgen, probeer je het volgende: >> met (mtcars, mean (mpg)) [1] 20. 09062> with (mtcars, mean (mpg [ hp met (mtcars, mean (mpg [hp> = 150])) [1] 15. 40667
- U kunt ook t () gebruiken om dataframes te transponeren, maar wees voorzichtig wanneer u Het resultaat van een transpositie is altijd een matrix (of matrix) Omdat arrays altijd maar één type hebben van variabele, zoals numeriek of karakter, de variabeletypes van uw resultaten zijn misschien niet wat u verwacht.
- Om bijvoorbeeld de locatie van het element "Toyota Corolla" in de rijnamen van mtcars te vinden, probeert u het volgende: >> indexindex [1] 20> mtcars [index, 1: 4] mpg cyl disp hp Toyota Corolla 33. 9 4 71. 1 65
- Stel u voor dat u de verkoopdirecteur van een bedrijf bent en dat u de beste prijs voor uw product moet instellen. Met andere woorden, zoek de prijs van een product dat de opbrengst maximaliseert.
Video: Top 10 Excel New Features 2024
kunt gebruiken. Het spreadsheet is waarschijnlijk een van de meest gebruikte pc-applicaties - en terecht: met spreadsheets kun je heel eenvoudig berekeningen en andere bewerkingen uitvoeren op tabulaire basis. gegevens. Maar spreadsheets vormen ook een aantal risico's: ze zijn gemakkelijk te corrumperen en zeer moeilijk te debuggen. Het goede nieuws is dat je R kunt gebruiken om veel van dezelfde dingen te doen als in spreadsheets.
Rij- en kolomtotalen
Het berekenen van rij- of kolomtotalen is een taak die u vaak in een spreadsheet kunt uitvoeren. De eenvoudigste manier om dit te doen is om de functies rowSums () en colSums () te gebruiken. Gebruik ook rowMeans () en colMeans () om gemiddelden te berekenen.
Probeer het op de iris van de ingebouwde gegevensset. Verwijder eerst de vijfde kolom, omdat deze tekst bevat die de soort iris beschrijft: >> iris. num <- iris [- 5]
Bereken vervolgens de som en het gemiddelde voor elke kolom:
Opmaaknummers
U kunt indeling () gebruiken om uw getallen om te zetten in mooie tekst, klaar om af te drukken. Deze functie neemt een aantal argumenten om het formaat van uw resultaat te bepalen. Hier zijn een paar:
trim
:Een logische waarde. Als FALSE, voegt het spaties toe om het resultaat te rechtvaardigen. Als TRUE, onderdrukt het de voorloopspaties.
-
cijfers : Hoeveel significante cijfers van numerieke waarden worden weergegeven.
-
nsmall : Het minimumaantal cijfers achter de komma.
-
Bovendien bepaalt u de opmaak van de komma met een decimaal. markeer het teken tussen intervallen vóór de komma met groot. mark en het teken tussen intervallen
na de komma met een kleine. Mark. U kunt bijvoorbeeld het getal 12345. 6789 afdrukken met een komma als decimaalteken, spaties als de grote markering en punten als de kleine markering: >> -indeling (12345, 6789, cijfers = 9, decimaal. mark = ",", + big. mark = "", small. mark = ".", small. interval = 3) [1] "12 345, 678. 9" Als een meer praktisch voorbeeld, om te berekenen het middel van enkele kolommen in mtcars en druk de resultaten vervolgens af met twee cijfers achter de komma, gebruik het volgende: >> x-formaat (x, cijfers = 2, nsmall = 2) mpg cyl disp hp "20.09 "" 6. 19 "" 230. 72 "" 146. 69 " U ziet dat het resultaat niet langer een cijfer maar een tekenreeks is. Wees dus voorzichtig wanneer u nummeropmaak gebruikt - dit zou de laatste stap moeten zijn in uw rapportagewerkstroom.
Als u bekend bent met programmeren in talen die lijken op C of C ++, dan vindt u mogelijk ook de functie sprintf () nuttig. Met deze omslag kunt u uw opgemaakte nummer rechtstreeks in een reeks plakken.
Hier volgt een voorbeeld van het converteren van getallen in percentages: >> x sprintf ("%. 1f %%", 100 * x) [1] "50. 0% "" 51. 0% "" 52. 0% "" 53. 0% "" 54. 0% "" 55. 0% "
Dit is wat het doet: het eerste argument voor sprintf () geeft het formaat aan - in dit geval"%. 1f %% ". Het argument format gebruikt speciale literals die aangeven dat de functie dit letterlijke moet vervangen door een variabele en enige opmaak moet toepassen. De letters beginnen altijd met het symbool%. Dus in dit geval%. 1f betekent dat de eerste geleverde waarde wordt geformatteerd als een vaste puntwaarde met één cijfer achter de komma en %% letterlijk is, wat betekent dat een% wordt afgedrukt.
Om sommige nummers als valuta te formatteren - in dit geval U. S. dollars - gebruik: >> ingesteld. seed (1)> x sprintf ("$% 3. 2f", x) [1] "$ 265. 51" "$ 372. 12" "$ 572. 85" "$ 908. 21" "$ 201. 68 "
De functie sprintf () biedt u een alternatieve manier om de waarde van een variabele in een tekenreeks te plakken: >> stuff price sprintf ("% s cost $% 3. 2f ", spullen, prijs) [1] "Brood kost $ 2. 10" "cookies kosten $ 4. 00"
Wat hier gebeurt is dat, omdat je twee vectoren (elk met twee elementen) aan sprintf () hebt geleverd, je resultaat een vector met twee elementen is. R bladert door de elementen en plaatst ze in de sprintf () -literalen.
Je kunt alles doen met plakken () en formatteren () die je kunt doen met sprintf (), dus je hoeft het niet echt te gebruiken. Maar als u dat doet, kan het uw code vereenvoudigen.
Gegevens sorteren
Om gegevens in R te sorteren, gebruikt u de functies sort () of order ().
Om het dataframe mtcars te sorteren in toenemende of afnemende volgorde van de kolom hp, gebruik: >> met (mtcars, mtcars [order (hp),])> met (mtcars, mtcars [order (hp, afnemend = TRUE),])
Keuzes maken met if
Spreadsheets bieden u de mogelijkheid om allerlei soorten "Wat als?" Uit te voeren. "Analyses. Een manier om dit te doen is om de if () -functie in een spreadsheet te gebruiken.
R heeft ook de if () -functie, maar deze wordt meestal gebruikt voor stroombeheer in uw scripts. Omdat u meestal een berekening op een hele vector in R wilt uitvoeren, is het meestal beter om de functie ifelse () te gebruiken.
Hier is een voorbeeld van het gebruik van ifelse () om auto's met een hoog brandstofverbruik in de dataset mtcars te identificeren: >> mtcars <- transform (mtcars, + mpgClass = ifelse (mpg mtcars [mtcars $ mpgClass == "High",]
Voorwaardelijke totalen berekenen
Iets anders dat u waarschijnlijk veel hebt gedaan in Excel, is het berekenen van voorwaardelijke sommen en telt met de functies sumif () en countif ().
U kunt hetzelfde doen in een van de volgende twee manieren in R:
Gebruik ifelse.
Bereken eenvoudig de mate van interesse op een subset van uw gegevens.
Stel dat u een voorwaardelijk gemiddelde van brandstofefficiëntie in mtcars wilt berekenen. U doet dit met de functie mean (). Om het brandstofrendement voor auto's aan beide zijden van een drempel van 150 pk te krijgen, probeer je het volgende: >> met (mtcars, mean (mpg)) [1] 20. 09062> with (mtcars, mean (mpg [hp met (mtcars, mean (mpg [hp> = 150])) [1] 15. 40667
Het aantal elementen in een vector tellen is hetzelfde als vragen over de lengte ervan. Dit betekent dat de Excel-functie countif () heeft een R-equivalent in lengte (): >> met (mtcars, lengte (mpg [hp> 150])) [1] 13
Kolommen of rijen transponeren
Soms moet u uw gegevens transponeren van rijen naar kolommen of omgekeerd In R is de functie om een matrix te transponeren t (): >> xx [1] [2] [3] [1,] 1 5 9 [2,] 2 6 10 [3,] 3 7 11 [4,] 4 8 12
Gebruik t () voor het transponeren van een matrix: >> t (x) [1] [2] [3] [4] [1,] 1 2 3 4 [2,] 5 6 7 8 [3,] 9 10 11 12
U kunt ook t () gebruiken om dataframes te transponeren, maar wees voorzichtig wanneer u Het resultaat van een transpositie is altijd een matrix (of matrix) Omdat arrays altijd maar één type hebben van variabele, zoals numeriek of karakter, de variabeletypes van uw resultaten zijn misschien niet wat u verwacht.
Unieke of gedupliceerde waarden zoeken
Gebruik de unieke functie () om alle unieke waarden in uw gegevens te identificeren. Probeer de unieke waarden van het aantal cilinders in mtcars te vinden: >> uniek (mtcars $ cyl) [1] 6 4 8
-
Soms wilt u weten welke waarden van uw gegevens duplicaten zijn. Afhankelijk van uw situatie zijn die duplicaten geldig, maar soms kunnen dubbele vermeldingen wijzen op problemen bij het invoeren van gegevens.
-
De functie om dubbele invoer te identificeren is gedupliceerd (). In de ingebouwde gegevensset iris bevindt zich een gedupliceerde rij in regel 143. Probeer het zelf: >> dupes head (dupes) [1] FALSE FALSE FALSE FALSE FALSE FALSE> which (dupes) [1] 143> iris [dupes,] Sepal. Lengte Sepal. Breedte Petal. Lengte bloemblaadje. Breedte Soort 143 5. 8 2. 7 5. 1 1. 9 virginica
Omdat het resultaat van gedupliceerd () een logische vector is, kunt u het als een index gebruiken om rijen uit uw gegevens te verwijderen. Gebruik hiervoor de operator voor negatie - het uitroepteken (zoals in! Dupes): >> iris [! dupes,]> nrow (iris [! dupes,]) [1] 149
Werken met opzoektabellen
In een spreadsheetapplicatie zoals Excel, kunt u opzoektabellen maken met de functies vlookup of een combinatie van index en match.
In R kan het handig zijn om samenvoegen () of overeenkomst () te gebruiken. De functie match () retourneert een vector met de posities van elementen die overeenkomen met uw opzoekwaarde.
Om bijvoorbeeld de locatie van het element "Toyota Corolla" in de rijnamen van mtcars te vinden, probeert u het volgende: >> indexindex [1] 20> mtcars [index, 1: 4] mpg cyl disp hp Toyota Corolla 33. 9 4 71. 1 65
Werken met draaitabellen
Voor eenvoudige tabellen in R kunt u de functie tapply () gebruiken om vergelijkbare resultaten te behalen voor draaitabellen in Excel.Hier is een voorbeeld van het gebruik van tapply () om de gemiddelde PK te berekenen voor auto's met verschillende aantallen cilinders en versnellingen: >> met (mtcars, tapply (hp, lijst (cyl, gear), mean)) 3 4 5 4 97. 0000 76. 0 102. 0 6 107. 5000 116. 5 175. 0 8 194. 1667 NA 299. 5
Voor iets complexere tabellen - dat wil zeggen tabellen met meer dan twee cross-classificerende factoren - gebruikt u het aggregaat () functie: >> aggregaat (hp ~ cyl + versnelling + am, mtcars, mean) cil-versnelling am hp 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
Gebruik het doel zoeken en oplossen
In R biedt de functie optim () een vrij eenvoudig mechanisme voor het optimaliseren van functies.
Stel u voor dat u de verkoopdirecteur van een bedrijf bent en dat u de beste prijs voor uw product moet instellen. Met andere woorden, zoek de prijs van een product dat de opbrengst maximaliseert.
In de economie stelt een eenvoudig prijsmodel dat mensen minder van een bepaald product kopen als de prijs stijgt. Hier is een heel eenvoudige functie met dit gedrag: >> verkoop <- functie (prijs) {100 - 0. 5 * prijs}
De verwachte opbrengst is dan gewoon het product van de prijs en de verwachte verkoop: >> opbrengst <- functie (prijs) {prijs * omzet (prijs)}
U kunt de curve () functie gebruiken om doorlopende functies uit te zetten. Dit neemt een functie als invoer aan en produceert een plot. Probeer het gedrag van verkopen en inkomsten uit te zetten met de functie curve (), variërende prijs van $ 50 tot $ 150: >> oldpar-curve (verkoop, van = 50, tot = 150, xname = "price", main = "Sales ")> Curve (opbrengst, van = 50, tot = 150, xname =" price ", main =" Revenue ")> par (oldpar)
Uw resultaten moeten er ongeveer zo uitzien.
Een model van verwachte verkopen en inkomsten.
U heeft een werkmodel voor verkopen en inkomsten. Je ziet meteen dat er een punt is met maximale omzet. Gebruik vervolgens de R-functie optimaliseren () om de waarde van dat maximum te vinden. Als u optimal () wilt gebruiken, moet u aangeven welke functie moet worden gebruikt (in dit geval, opbrengst ()), evenals het interval (in dit geval prijzen tussen 50 en 150). Standaard wordt met optimaliseren () gezocht naar een minimumwaarde, dus in dit geval moet u dit opgeven om naar de maximale waarde te zoeken: >> optimaliseren (opbrengst, interval = c (50, 150), maximum = WAAR) $ maximum [1] 100 $ objectief [1] 5000
En daar ga je. Laad een prijs van $ 100 op en verwacht $ 5.000 aan inkomsten te ontvangen.