Oppsummering av en variabel er viktig for å ha en idé om dataene. Selv om det å oppsummere en variabel etter gruppe gir bedre informasjon om distribusjonen av dataene.
I denne opplæringen lærer du hvordan du oppsummerer et datasett etter gruppe med dplyr-biblioteket.
I denne veiledningen vil du lære
- Oppsummer ()
- Group_by vs ingen group_by
- Funksjon i oppsummering ()
- Grunnleggende funksjon
- Delmengde
- Sum
- Standardavvik
- Minimum og maksimum
- Telle
- Først og sist
- nte observasjon
- Flere grupper
- Filter
- Opphev gruppering
For denne opplæringen vil du bruke batting datasettet. Det opprinnelige datasettet inneholder 102816 observasjoner og 22 variabler. Du vil bare bruke 20 prosent av dette datasettet og bruke følgende variabler:
- playerID: Player ID-kode. Faktor
- yearID: Year. Faktor
- teamID: Team. faktor
- LGID: Liga. Faktor: AA AL FL NL PL UA
- AB: Ved flaggermus. Numerisk
- G: Spill: antall spill av en spiller. Numerisk
- R: Kjører. Numerisk
- HR: Homeruns. Numerisk
- SH: Offer treffer. Numerisk
Før du utfører sammendrag, vil du gjøre følgende trinn for å forberede dataene:
- Trinn 1: Importer dataene
- Trinn 2: Velg relevante variabler
- Trinn 3: Sorter dataene
library(dplyr)# Step 1data <- read.csv("https://raw.githubusercontent.com/guru99-edu/R-Programming/master/lahman-batting.csv") %> %# Step 2select(c(playerID, yearID, AB, teamID, lgID, G, R, HR, SH)) %> %# Step 3arrange(playerID, teamID, yearID)
En god praksis når du importerer et datasett, er å bruke glimt () -funksjonen til å få en idé om strukturen til datasettet.
# Structure of the dataglimpse(data)
Produksjon:
Observations: 104,324Variables: 9$ playerIDaardsda01, aardsda01, aardsda01, aardsda01, aardsda01, a… $ yearID 2015, 2008, 2007, 2006, 2012, 2013, 2009, 2010, 2004, 196… $ AB 1, 1, 0, 2, 0, 0, 0, 0, 0, 603, 600, 606, 547, 516, 495,… $ teamID ATL, BOS, CHA, CHN, NYA, NYN, SEA, SEA, SFN, ATL, ATL, A… $ lgID NL, AL, AL, NL, AL, NL, AL, AL, NL, NL, NL, NL, NL, NL,… $ G 33, 47, 25, 45, 1, 43, 73, 53, 11, 158, 155, 160, 147, 15… $ R 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 113, 84, 100, 103, 95, 75… $ HR 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 39, 29, 44, 38, 47, 34, 40… $ SH 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6,…
Oppsummer ()
Syntaksen for summarize () er grunnleggende og samsvarer med de andre verbene som er inkludert i dplyr-biblioteket.
summarise(df, variable_name=condition)arguments:- `df`: Dataset used to construct the summary statistics- `variable_name=condition`: Formula to create the new variable
Se på koden nedenfor:
summarise(data, mean_run =mean(R))
Kode Forklaring
- oppsummere (data, mean_run = middel (R)): Oppretter en variabel som heter mean_run som er gjennomsnittet av kolonnekjøringen fra datasettdataene.
Produksjon:
## mean_run## 1 19.20114
Du kan legge til så mange variabler du vil. Du returnerer gjennomsnittlig spilt spill og gjennomsnittlig offer treff.
summarise(data, mean_games = mean(G),mean_SH = mean(SH, na.rm = TRUE))
Kode Forklaring
- mean_SH = mean (SH, na.rm = TRUE): Oppsummer en andre variabel. Du angir na.rm = SANT fordi kolonnen SH inneholder manglende observasjoner.
Produksjon:
## mean_games mean_SH## 1 51.98361 2.340085
Group_by vs ingen group_by
Funksjonen summerise () uten group_by () gir ingen mening. Det skaper sammendragsstatistikk etter gruppe. Biblioteket dplyr bruker en funksjon automatisk til gruppen du passerte inne i verbet group_by.
Merk at group_by fungerer perfekt med alle de andre verbene (dvs. mutere (), filter (), ordne (), ...).
Det er praktisk å bruke røroperatøren når du har mer enn ett trinn. Du kan beregne gjennomsnittlig homerun etter baseball liga.
data % > %group_by(lgID) % > %summarise(mean_run = mean(HR))
Kode Forklaring
- data: Datasett som brukes til å lage sammendragsstatistikken
- group_by (lgID): Beregn sammendraget ved å gruppere variabelen `lgID
- oppsummere (mean_run = mean (HR)): Beregn gjennomsnittlig homerun
Produksjon:
### A tibble: 7 x 2## lgID mean_run#### 1 AA 0.9166667## 2 AL 3.1270988## 3 FL 1.3131313## 4 NL 2.8595953## 5 PL 2.5789474## 6 UA 0.6216216## 7 0.2867133
Røroperatøren jobber også med ggplot (). Du kan enkelt vise sammendragsstatistikken med en graf. Alle trinnene skyves inn i rørledningen til grapen er tomt. Det virker mer visuelt å se den gjennomsnittlige homerunen etter liga med en barkrøye. Koden nedenfor viser kraften til å kombinere group_by (), oppsummere () og ggplot () sammen.
Du vil gjøre følgende trinn:
- Trinn 1: Velg dataramme
- Trinn 2: Gruppedata
- Trinn 3: Oppsummer dataene
- Trinn 4: Plott oppsummeringsstatistikken
library(ggplot2)# Step 1data % > %#Step 2group_by(lgID) % > %#Step 3summarise(mean_home_run = mean(HR)) % > %#Step 4ggplot(aes(x = lgID, y = mean_home_run, fill = lgID)) +geom_bar(stat = "identity") +theme_classic() +labs(x = "baseball league",y = "Average home run",title = paste("Example group_by() with summarise()"))
Produksjon:
Funksjon i oppsummering ()
Verbet oppsummer () er kompatibelt med nesten alle funksjonene i R. Her er en kort liste over nyttige funksjoner du kan bruke sammen med oppsummere ():
Objektiv | Funksjon | Beskrivelse |
---|---|---|
Grunnleggende | mener() | Gjennomsnitt av vektor x |
median () | Median av vektor x | |
sum() | Summen av vektor x | |
variasjon | sd () | standardavvik for vektor x |
IQR () | Interkvartil av vektor x | |
Område | min () | Minimum av vektor x |
maks () | Maksimum av vektor x | |
kvantil () | Kvantil av vektor x | |
Stilling | først() | Bruk med group_by () Første observasjon av gruppen |
siste() | Bruk med group_by (). Siste observasjon av gruppen | |
nth () | Bruk med group_by (). niende observasjon av gruppen | |
Telle | n () | Bruk med group_by (). Tell antall rader |
n_distinct () | Bruk med group_by (). Telle antall forskjellige observasjoner |
Vi vil se eksempler på alle funksjonene i tabell 1.
Grunnleggende funksjon
I forrige eksempel lagret du ikke sammendragsstatistikken i en dataramme.
Du kan fortsette i to trinn for å generere en dataramme fra et sammendrag:
- Trinn 1: Lagre datarammen for videre bruk
- Trinn 2: Bruk datasettet til å lage et linjediagram
Trinn 1) Du beregner gjennomsnittlig antall spill spilt etter år.
## Meanex1 <- data % > %group_by(yearID) % > %summarise(mean_game_year = mean(G))head(ex1)
Kode Forklaring
- Oppsummeringsstatistikken for batting-datasettet er lagret i datarammen ex1.
Produksjon:
## # A tibble: 6 x 2## yearID mean_game_year#### 1 1871 23.42308## 2 1872 18.37931## 3 1873 25.61538## 4 1874 39.05263## 5 1875 28.39535## 6 1876 35.90625
Trinn 2) Du viser sammendragsstatistikken med et linjediagram og ser trenden.
# Plot the graphggplot(ex1, aes(x = yearID, y = mean_game_year)) +geom_line() +theme_classic() +labs(x = "Year",y = "Average games played",title = paste("Average games played from 1871 to 2016"))
Produksjon:
Delmengde
Funksjonen oppsummere () er kompatibel med delmengde.
## Subsetting + Mediandata % > %group_by(lgID) % > %summarise(median_at_bat_league = median(AB),#Compute the median without the zeromedian_at_bat_league_no_zero = median(AB[AB > 0]))
Kode Forklaring
- median_at_bat_league_no_zero = median (AB [AB> 0]): Variabelen AB inneholder mange 0. Du kan sammenligne medianen til bat- variabelen med og uten 0.
Produksjon:
## # A tibble: 7 x 3## lgID median_at_bat_league median_at_bat_league_no_zero#### 1 AA 130 131## 2 AL 38 85## 3 FL 88 97## 4 NL 56 67## 5 PL 238 238## 6 UA 35 35## 7 101 101
Sum
En annen nyttig funksjon for å samle variabelen er sum ().
Du kan sjekke hvilke ligaer som har flere homeruns.
## Sumdata % > %group_by(lgID) % > %summarise(sum_homerun_league = sum(HR))
Produksjon:
## # A tibble: 7 x 2## lgID sum_homerun_league#### 1 AA 341## 2 AL 29426## 3 FL 130## 4 NL 29817## 5 PL 98## 6 UA 46## 7 41
Standardavvik
Spredning i dataene beregnes med standardavviket eller sd () i R.
# Spreaddata % > %group_by(teamID) % > %summarise(sd_at_bat_league = sd(HR))
Produksjon:
## # A tibble: 148 x 2## teamID sd_at_bat_league#### 1 ALT NA## 2 ANA 8.7816395## 3 ARI 6.0765503## 4 ATL 8.5363863## 5 BAL 7.7350173## 6 BFN 1.3645163## 7 BFP 0.4472136## 8 BL1 0.6992059## 9 BL2 1.7106757## 10 BL3 1.0000000## #… with 138 more rows
Det er mange ulikheter i mengden homerun som gjøres av hvert lag.
Minimum og maksimum
Du kan få tilgang til minimum og maksimum for en vektor med funksjonen min () og max ().
Koden nedenfor returnerer det laveste og høyeste antall kamper i en sesong spilt av en spiller.
# Min and maxdata % > %group_by(playerID) % > %summarise(min_G = min(G),max_G = max(G))
Produksjon:
## # A tibble: 10,395 x 3## playerID min_G max_G#### 1 aardsda01 53 73## 2 aaronha01 120 156## 3 aasedo01 24 66## 4 abadfe01 18 18## 5 abadijo01 11 11## 6 abbated01 3 153## 7 abbeybe01 11 11## 8 abbeych01 80 132## 9 abbotgl01 5 23## 10 abbotji01 13 29## #… with 10,385 more rows
Telle
Telle observasjoner etter gruppe er alltid en god idé. Med R kan du samle antall forekomster med n ().
For eksempel beregner koden nedenfor antall år som hver spiller spiller.
# count observationsdata % > %group_by(playerID) % > %summarise(number_year = n()) % > %arrange(desc(number_year))
Produksjon:
## # A tibble: 10,395 x 2## playerID number_year#### 1 pennohe01 11## 2 joosted01 10## 3 mcguide01 10## 4 rosepe01 10## 5 davisha01 9## 6 johnssi01 9## 7 kaatji01 9## 8 keelewi01 9## 9 marshmi01 9## 10 quirkja01 9## #… with 10,385 more rows
Først og sist
Du kan velge den første, siste eller niende posisjonen til en gruppe.
For eksempel kan du finne det første og siste året til hver spiller.
# first and lastdata % > %group_by(playerID) % > %summarise(first_appearance = first(yearID),last_appearance = last(yearID))
Produksjon:
## # A tibble: 10,395 x 3## playerID first_appearance last_appearance#### 1 aardsda01 2009 2010## 2 aaronha01 1973 1975## 3 aasedo01 1986 1990## 4 abadfe01 2016 2016## 5 abadijo01 1875 1875## 6 abbated01 1905 1897## 7 abbeybe01 1894 1894## 8 abbeych01 1895 1897## 9 abbotgl01 1973 1979## 10 abbotji01 1992 1996## #… with 10,385 more rows
nte observasjon
Fonksjonen nth () er komplementær til første () og siste (). Du kan få tilgang til den niende observasjonen i en gruppe med indeksen for å returnere.
For eksempel kan du bare filtrere det andre året et lag spilte.
# nthdata % > %group_by(teamID) % > %summarise(second_game = nth(yearID, 2)) % > %arrange(second_game)
Produksjon:
## # A tibble: 148 x 2## teamID second_game#### 1 BS1 1871## 2 CH1 1871## 3 FW1 1871## 4 NY2 1871## 5 RC1 1871## 6 BR1 1872## 7 BR2 1872## 8 CL1 1872## 9 MID 1872## 10 TRO 1872## #… with 138 more rows
Tydelig antall observasjoner
Funksjonen n () returnerer antall observasjoner i en gjeldende gruppe. En lukket funksjon til n () er n_distinct (), som teller antall unike verdier.
I neste eksempel legger du opp totalt antall spillere et lag rekrutterte i alle periodene.
# distinct valuesdata % > %group_by(teamID) % > %summarise(number_player = n_distinct(playerID)) % > %arrange(desc(number_player))
Kode Forklaring
- group_by (teamID): Gruppe etter år og team
- oppsummere (number_player = n_distinct (playerID)): Tell det forskjellige antallet spillere etter lag
- ordne (desc (number_player)): Sorter dataene etter antall spillere
Produksjon:
## # A tibble: 148 x 2## teamID number_player#### 1 CHN 751## 2 SLN 729## 3 PHI 699## 4 PIT 683## 5 CIN 679## 6 BOS 647## 7 CLE 646## 8 CHA 636## 9 DET 623## 10 NYA 612## #… with 138 more rows
Flere grupper
En sammendragstatistikk kan realiseres blant flere grupper.
# Multiple groupsdata % > %group_by(yearID, teamID) % > %summarise(mean_games = mean(G)) % > %arrange(desc(teamID, yearID))
Kode Forklaring
- group_by (yearID, teamID): Gruppe etter år og team
- oppsummere (middel_spill = gjennomsnitt (G)): Oppsummer antall spillere
- ordne (desc (teamID, yearID)): Sorter dataene etter team og år
Produksjon:
## # A tibble: 2,829 x 3## # Groups: yearID [146]## yearID teamID mean_games#### 1 1884 WSU 20.41667## 2 1891 WS9 46.33333## 3 1886 WS8 22.00000## 4 1887 WS8 51.00000## 5 1888 WS8 27.00000## 6 1889 WS8 52.42857## 7 1884 WS7 8.00000## 8 1875 WS6 14.80000## 9 1873 WS5 16.62500## 10 1872 WS4 4.20000## #… with 2,819 more rows
Filter
Før du har tenkt å utføre en operasjon, kan du filtrere datasettet. Datasettet startet i 1871, og analysen trenger ikke årene før 1980.
# Filterdata % > %filter(yearID > 1980) % > %group_by(yearID) % > %summarise(mean_game_year = mean(G))
Kode Forklaring
- filter (årID> 1980): Filtrer dataene for å bare vise de aktuelle årene (dvs. etter 1980)
- group_by (yearID): Gruppe etter år
- oppsummere (gjennomsnitt_spill_år = gjennomsnitt (G)): Oppsummer dataene
Produksjon:
## # A tibble: 36 x 2## yearID mean_game_year#### 1 1981 40.64583## 2 1982 56.97790## 3 1983 60.25128## 4 1984 62.97436## 5 1985 57.82828## 6 1986 58.55340## 7 1987 48.74752## 8 1988 52.57282## 9 1989 58.16425## 10 1990 52.91556## #… with 26 more rows
Opphev gruppering
Sist, men ikke minst, må du fjerne grupperingen før du vil endre beregningsnivået.
# Ungroup the datadata % > %filter(HR > 0) % > %group_by(playerID) % > %summarise(average_HR_game = sum(HR) / sum(G)) % > %ungroup() % > %summarise(total_average_homerun = mean(average_HR_game))
Kode Forklaring
- filter (HR> 0): Ekskluder null homerun
- group_by (playerID): gruppe for spiller
- oppsummere (gjennomsnitt_HR_spill = sum (HR) / sum (G)): Beregn gjennomsnittlig homerun etter spiller
- ungroup (): fjern grupperingen
- oppsummere (total_ gjennomsnittlig_homerun = gjennomsnitt (gjennomsnitt_HR_spill)): Oppsummer dataene
Produksjon:
## # A tibble: 1 x 1## total_average_homerun#### 1 0.06882226
Sammendrag
Når du vil returnere et sammendrag etter gruppe, kan du bruke:
# group by X1, X2, X3group(df, X1, X2, X3)
du må gruppere dataene med:
ungroup(df)
Tabellen nedenfor oppsummerer funksjonen du lærte med oppsummerer ()
metode |
funksjon |
kode |
---|---|---|
mener |
mener |
summarise(df,mean_x1 = mean(x1)) |
median |
median |
summarise(df,median_x1 = median(x1)) |
sum |
sum |
summarise(df,sum_x1 = sum(x1)) |
standardavvik |
sd |
summarise(df,sd_x1 = sd(x1)) |
interkvartil |
IQR |
summarise(df,interquartile_x1 = IQR(x1)) |
minimum |
min |
summarise(df,minimum_x1 = min(x1)) |
maksimum |
maks |
summarise(df,maximum_x1 = max(x1)) |
kvantil |
kvantil |
summarise(df,quantile_x1 = quantile(x1)) |
første observasjon |
først |
summarise(df,first_x1 = first(x1)) |
siste observasjon |
siste |
summarise(df,last_x1 = last(x1)) |
nte observasjon |
n |
summarise(df,nth_x1 = nth(x1, 2)) |
antall hendelser |
n |
summarise(df,n_x1 = n(x1)) |
antall forskjellige forekomster |
n_distinct |
summarise(df,n_distinct _x1 = n_distinct(x1)) |