Dplyr er en af de vigtigste pakker til R. Pakken er udviklet af Hadley Wickham, som også har udviklet ggplot2, tidyr, lubridate og mange flere. Dplyr indeholder en lang række funktioner, som letter stort set al bearbejdning af data.
Funktioner i base R (grundinstallationen af R) kan håndtere mange af de funktioner, der indgår i dplyr. I base R findes funktioner som split(), subset(), sapply(), lapply(), tapply() og aggregate(), men disse funktioner er svære at bruge og kan heller ikke kombineres på en naturlig måde med andre funktioner i tidyverse. Dplyr er let at arbejde med og kan desuden kombineres med funktioner i hundredvis af andre vigtige R-pakker. Faktisk bliver flere og flere pakker konstrueret og tilpasset, så de kan bruges sammen med dplyr. Dplyr indgår i tidyverse, som indeholder mange flere vigtige pakker (for eksempel ggplot2).
Funktionerne i dplyr er ikke blot lettere at bruge end base R, de er også mere effektive (de bruger mindre arbejdshukommelse og er som regel hurtigere).
Alle funktioner i dplyr er udformet til at blive brugt på dataframes (se tidligere diskussion). En dataframe er en rektangulær tabel med rækker og kolonner. I næsten alle tilfælde udgør rækkerne observationer, og kolonnerne udgør variabler (måleværdier, der beskriver observationerne).
I dette kapitel bliver samtlige funktioner i dplyr demonstreret. Blandt disse funktioner finder man for eksempel:
filter()- vælg variabler/tilfælde baseret på deres værdimutate()- tilføjer en ny variabel, som er en funktion af eksisterende variablerselect()- vælg variabler baseret på deres navnarrange()- skift rækkefølgen af rækker i en data framerename()- omdøb variablerslice()- vælger variabler baseret på deres positionsummarise()- opsummerer flere variabler til én opsummeret variabelgroup_by()- udfør dine funktioner på en bestemt gruppe af individer i din datafilacross()- anvend en eller flere funktioner på en bestemt gruppe af variablerif_else()- opretter en ny variabel baseret på forskellige betingelser, der kan være opfyldtrow_number()- brug rækkenumre til at tilføje en kolonne, der indeholder information om rækkenummerrowwise()- udfør dine funktioner på en gruppe af rækker (observationer)distinct()- udvælg rækker med unikke værdier for en eller flere variabler i din datafil
Installér dplyr
Dplyr indgår i det mere omfattende rammeværk tidyverse og kan derfor installeres med følgende kommando:
install.packages("tidyverse", dependencies = T)Aktivering af tidyverse fører til aktivering af følgende pakker: dplyr, ggplot2, forcats, tibble, tidyr, stringr, purr, readr:
library(tidyverse)── Attaching packages ─────────────────────────────────────────────── tidyverse 1.3.2 ──
✔ ggplot2 3.4.0 ✔ purrr 0.3.4
✔ tibble 3.1.8 ✔ dplyr 1.0.10
✔ tidyr 1.2.0 ✔ stringr 1.4.1
✔ readr 2.1.2 ✔ forcats 0.5.1
── Conflicts ────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()Som det fremgår af udskriften ovenfor, er pakkerne nu aktiveret. I pakken ggplot2 findes mpg-data, som vi nu aktiverer med følgende kommando:
## Aktivér mpg data
data(mpg)
## Vis de første 5 rækker
head(mpg)## A tibble: 6 × 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
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 compactGrupperede funktioner med group_by()
Med funktionen group_by() kan du tvinge dplyr til at udføre hver funktion separat i forskellige grupper i din dataframe. Vi kommer til at bruge group_by() i mange eksempler for at demonstrere dette.
Pipe-operatoren (pipe): |>
Styrken ved dplyr er muligheden for at kæde operationer (handlinger) sammen. I dplyr kan vi udføre operationer sekventielt ved hjælp af pipe, som har tegnet |>. Tidligere brugte man %>% som pipe-operator, men siden 2021 er dette ændret til |>. Genvejstasten for pipe er **Cmd+Shift+M** på Mac og Ctrl + Shift + M på Windows og Linux.
Pipe er magisk! Pipe tager nemlig resultatet af hver operation og sender det videre som første argument i den næste operation. Et eksempel på dette følger, med kommentarer nedenfor:
mpg |>
select(displ, cty, cyl) |>
mutate(ny_variabel = displ*cyl)- På linje 1 starter vi med
mpg-data, som vi sender videre til linje 2 med|>. - På linje 2 vælger vi at beholde tre kolonner:
displ,ctyogcyl. Resultatet bliver en ny dataframe, som kun indeholder disse tre variabler. Denne dataframe sendes videre som første argument på linje 3. - På linje 3 bruges
mutate()til at oprette variablenny_variabel, som er produktet afdisplogcyl.
Således bruges pipe (|>) til at kæde operationer sammen med dplyr.