Det er viktig å kunne aggregere (oppsummere) informasjon fra kolonnene i en dataframe. Dette er formålet med funksjonen summarise(). Funksjonene summarise() og summarize() er identiske synonymer. Disse funksjonene brukes i kombinasjon med andre funksjoner for å beregne gjennomsnitt, medianer, spredningsmål eller andre beregninger av interesse.
Vanlige funksjoner som brukes i kombinasjon med summarise():
- Sentralmål:
mean(), median() - Spredningsmål:
sd(), IQR(), mad() - Intervaller:
min(), max(), quantile() - Posisjoner:
first(), last(), nth() - Antall:
n(), n_distinct() - Logiske verdier:
any(), all()
I dette kapittelet bruker vi mpg-data for å demonstrere disse funksjonene. Aktiver mpg-data ved å aktivere tidyverse slik:
## Aktiver tidyverse
library(tidyverse)
## Aktiver mpg-data
data(mpg)
## Inspiser de første radene
head(mpg) manufacturer model displ year cyl trans drv cty hwy fl class
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2 2008 4 manual(m6) f 20 31 p compact
4 audi a4 2 2008 4 auto(av) f 21 30 p compact
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compact
6 audi a4 2.8 1999 6 manual(m5) f 18 26 p compactEksempel 1: Beregn gjennomsnitt, standardavvik og interkvartilbredde for kolonnen displ i mpg:
mpg |>
summarise(mean_displ = mean(displ, na.rm=T),
sd_displ = sd(displ, na.rm=T),
iqr_displ = IQR(displ, na.rm=T)) mean_displ sd_displ iqr_displ
3.47 1.29 2.2Som det fremgår ovenfor, ble mpg-data oppsummert til en ny dataframe med én enkelt rad. De nye kolonnene består av verdiene vi spesifiserte i summarise().
Eksempel 2: Bruke group_by() sammen med summarise().
I dette eksempelet oppsummerer vi de samme variablene som i forrige eksempel, men nå gjøres det separat for hver bilprodusent. Merk at vi skriver ungroup() helt til slutt for å deaktivere grupperingen av dataframen vår.
mpg |>
group_by(manufacturer) |>
summarise(mean_displ = mean(displ, na.rm=T),
sd_displ = sd(displ, na.rm=T),
iqr_displ = IQR(displ, na.rm=T)) manufacturer mean_displ sd_displ iqr_displ
audi 2.54 0.673 1.03
chevrolet 5.06 1.37 1.4
dodge 4.38 0.868 0.9
ford 4.54 0.541 0.600
honda 1.71 0.145 0.2
hyundai 2.43 0.365 0.55
jeep 4.58 1.02 1.03
land rover 4.3 0.258 0.300
lincoln 5.4 0 0
mercury 4.4 0.490 0.700
nissan 3.27 0.864 1
pontiac 3.96 0.808 0
subaru 2.46 0.109 0
toyota 2.95 0.931 1.15
volkswagen 2.26 0.443 0.5Hvis du vil lagre dette resultatet i en ny dataframe, bør du skrive ungroup() helt til slutt, slik at den nye dataframen ikke får grupperingen lagret, siden dette kan føre til uventede resultater. For å lagre mpg-data i (for eksempel) objektet mpg2 blir koden slik (merk ungroup() helt til slutt):
mpg2 <- mpg |>
group_by(manufacturer) |>
summarise(mean_displ = mean(displ, na.rm=T),
sd_displ = sd(displ, na.rm=T),
iqr_displ = IQR(displ, na.rm=T)) |>
ungroup()Eksempel 3: Beregn antall observasjoner med summarise():
Du kan bruke funksjonen n() til å beregne antall observasjoner i hver gruppe når summarise() brukes. Her følger det samme eksempelet som ovenfor, men med tillegg av n() for å beregne antall observasjoner:
mpg |>
group_by(manufacturer) |>
summarise(n = n(),
mean_displ = mean(displ, na.rm=T),
sd_displ = sd(displ, na.rm=T),
iqr_displ = IQR(displ, na.rm=T))manufacturer n mean_displ sd_displ iqr_displ
audi 18 2.54 0.673 1.03
chevrolet 19 5.06 1.37 1.4
dodge 37 4.38 0.868 0.9
ford 25 4.54 0.541 0.600
honda 9 1.71 0.145 0.2
hyundai 14 2.43 0.365 0.55
jeep 8 4.58 1.02 1.03
land rover 4 4.3 0.258 0.300
lincoln 3 5.4 0 0
mercury 4 4.4 0.490 0.700
nissan 13 3.27 0.864 1
pontiac 5 3.96 0.808 0
subaru 14 2.46 0.109 0
toyota 34 2.95 0.931 1.15
volkswagen 27 2.26 0.443 0.5