Det er vigtigt at kunne aggregere (opsummere) information fra kolonnerne i en dataframe. Det er formålet med funktionen summarise(). Funktionerne summarise() og summarize() er identiske synonymer. Disse funktioner bruges i kombination med andre funktioner til at beregne gennemsnit, medianer, spredningsmål eller andre beregninger af interesse.
Almindelige funktioner, der bruges i kombination med summarise():
- Centralmål:
mean(), median() - Spredningsmål:
sd(), IQR(), mad() - Intervaller:
min(), max(), quantile() - Positioner:
first(), last(), nth() - Antal:
n(), n_distinct() - Logiske værdier:
any(), all()
I dette kapitel bruger vi mpg-data til at demonstrere disse funktioner. Aktivér mpg-data ved at aktivere tidyverse som følger:
## Aktivér tidyverse
library(tidyverse)
## Aktivér mpg-data
data(mpg)
## Inspicér de første rækker
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 gennemsnit, standardafvigelse 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, blev mpg-data opsummeret til en ny dataframe med én enkelt række. De nye kolonner består af de værdier, vi specificerede i summarise().
Eksempel 2: Brug af group_by() sammen med summarise().
I dette eksempel opsummerer vi de samme variabler som i det foregående eksempel, men det sker nu separat for hver bilproducent. Bemærk, at vi skriver ungroup() allersidst for at deaktivere grupperingen af vores dataframe.
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 gemme dette resultat i en ny dataframe, bør du skrive ungroup() allersidst, så den nye dataframe ikke har grupperingen gemt, da dette kan føre til uventede resultater. For at gemme mpg-data i (eksempelvis) objektet mpg2 bliver koden som følger (bemærk ungroup() allersidst):
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 antal observationer med summarise():
Du kan bruge funktionen n() til at beregne antal observationer i hver gruppe, når summarise() anvendes. Her følger det samme eksempel som ovenfor, men med tilføjelse af n() til at beregne antal observationer:
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