Dplyr er en av de viktigste pakkene for R. Pakken ble laget av Hadley Wickham, som også har laget ggplot2, tidyr, lubridate og mange flere. Dplyr inneholder en lang rekke funksjoner som forenkler i prinsippet all bearbeiding av data.
Funksjoner i base R (grunninstallasjonen av R) kan håndtere mange av funksjonene som inngår i dplyr. I base R finnes funksjoner som split(), subset(), sapply(), lapply(), tapply() og aggregate(), men disse funksjonene er vanskelige å bruke og kan heller ikke kombineres på en naturlig måte med andre funksjoner i tidyverse. Dplyr er lett å arbeide med og kan dessuten kombineres med funksjoner i hundrevis av andre viktige R-pakker. Faktisk blir stadig flere pakker utviklet og tilpasset for å kunne brukes sammen med dplyr. Dplyr inngår i tidyverse, som inneholder mange flere viktige pakker (for eksempel ggplot2).
Funksjonene i dplyr er ikke bare enklere å bruke sammenlignet med base R, de er også mer effektive (de bruker mindre arbeidsminne og er som regel raskere).
Alle funksjoner i dplyr er utformet for å brukes på dataframes (se tidligere diskusjon). En dataframe er en rektangulær tabell med rader og kolonner. I nesten alle tilfeller utgjør radene observasjoner og kolonnene variabler (måleverdier som beskriver observasjonene).
I dette kapittelet vil alle funksjonene i dplyr bli demonstrert. Blant disse funksjonene finner vi for eksempel:
filter()- velg variabler/tilfeller basert på verdien deresmutate()- legger til en ny variabel som er en funksjon av eksisterende variablerselect()- velg variabler basert på navnet deresarrange()- endre rekkefølgen på rader i en data framerename()- gi variabler nytt navnslice()- velger variabler basert på posisjonen deressummarise()- oppsummerer flere variabler til én oppsummert variabelgroup_by()- utfør funksjonene dine på en bestemt gruppe individer i datafilen dinacross()- bruk én eller flere funksjoner på en bestemt gruppe variablerif_else()- lager en ny variabel basert på ulike påstander som kan være oppfyltrow_number()- bruk radnummer for å legge til en kolonne som inneholder informasjon om radnummerrowwise()- utfør funksjonene dine på en gruppe rader (observasjoner)distinct()- velg ut rader med unike verdier for én eller flere variabler i datafilen din
Installere dplyr
Dplyr inngår i det mer omfattende rammeverket tidyverse og kan derfor installeres med følgende kommando:
install.packages("tidyverse", dependencies = T)Aktivering av tidyverse vil føre til aktivering av 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 av utskriften ovenfor, er pakkene nå aktivert. I pakken ggplot2 finnes mpg-data, som vi nå aktiverer med følgende kommando:
## Aktiver mpg-data
data(mpg)
## Vis de første 5 radene
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 compactGrupperte funksjoner med group_by()
Med funksjonen group_by() kan du tvinge dplyr til å utføre hver funksjon separat i ulike grupper i dataframen din. Vi kommer til å bruke group_by() i mange eksempler for å demonstrere dette.
Pipe-operatoren (pipe): |>
Styrken i dplyr er muligheten til å kjede sammen operasjoner (hendelser). I dplyr kan vi utføre operasjoner sekvensielt ved hjelp av pipe, som har tegnet |>. Tidligere ble %>% brukt som pipe-operator, men siden 2021 er dette endret til |>. Hurtigtasten for pipe er **Cmd+Shift+M** på Mac og Ctrl + Shift + M på Windows og Linux.
Pipe er magisk! Pipe tar nemlig resultatet av hver operasjon og sender det videre som første argument i neste operasjon. 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 velger vi å beholde tre kolonner:
displ,ctyogcyl. Resultatet blir en ny dataframe som bare inneholder disse tre variablene. Denne dataframen sendes videre som første argument på linje 3. - På linje 3 brukes
mutate()for å lage variabelenny_variabel, som er produktet avdisplogcyl.
Dermed brukes pipe (|>) for å kjede sammen operasjoner med dplyr.