Dplyr är ett av de viktigaste paketen till R. Paketet skapades av Hadley Wickham, som även skapat ggplot2, tidyr, lubridate, och många fler. Dplyr inkluderar en lång rad funktioner som underlättar i princip all bearbetning av data.
Funktioner i base R (grundinstallationen av R) kan hantera många av de funktioner som ingår i dplyr. I base R finns funktioner som split()
, subset()
, sapply()
, lapply()
, tapply()
och aggregate()
, men dessa funktioner är svåra att använda och kan inte heller kombineras på ett naturligt sätt med andra funktioner i tidyverse. Dplyr är lätt att arbeta med och kan dessutom kombineras med funktioner i hundratalas andra viktiga R paket. Faktum är att allt fler paket konstrueras och anpassas för att kunna användas tillsammans med dplyr. Dplyr ingår i tidyverse som innehåller många fler viktiga paket (exempelvis ggplot2).
Funktionerna i dplyr är inte bara enklare att använda jämfört med base R, de är också mer effektiva (de konsumerar mindre arbetsminne och är som regel snabbare).
Alla funktioner i dplyr är utformade för att användas på dataframes (se tidigare diskussion). En dataframe är en rektanbulär tabell med rader och kolumner. I nästan samtliga fall utgör raderna observationer och kolumnerna utgör variabler (mätvärden som beskriver observationerna).
I detta kapitel kommer samtliga funktioner i dplyr demonstreras. Bland dessa funktioner återfinns exempelvis:
filter()
- välj variabler/fall baserat på deras värdemutate()
- lägger till en ny variabel som är en funktion av befintliga variablerselect()
- välj variabler baserat på deras namnarrange()
- byt ordningsföljd på rader i data framerename()
- byt namn på variablerslice()
- väljer variabler baserat på deras positionsummarise()
- summerar flera variabler till en summerad variabelgroup_by()
- utför dina funktioner på en bestämd grupp av individer i din datafilacross()
- applicera en eller flera funktioner på en särskild grupp av variablerif_else()
- skapar en ny variabel baserat på olika påståenden som kan uppfyllasrow_number()
- använd radnummer för att lägga till kolumn som innehåller information on radnummerrowwise()
- utför dina funktioner på en grupp av rader (observationer)distinct()
- välj ut rader med unika värden för en eller flera variabler i din datafil
Installera dplyr
Dplyr ingår i det mer omfattande ramverket tidyverse och kan därför installeras genom följande kommando:
install.packages("tidyverse", dependencies = T)
Aktivering av tidyverse kommer leda till aktivering av följande paket: 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 framgår av utskriften ovan är paketen nu aktiverade. I paketet ggplot2 finns mpg
data, som vi nu aktiverar med följande kommando:
# Aktivera mpg data
data(mpg)
# Visa första 5 raderna
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 compact
Grupperade funktioner med group_by()
Med funktionen group_by()
kan du tvinga dplyr att utföra varje funktion separat i olika grupper i din dataframe. Vi kommer anvädna group_by()
i många exempel för att demonstrera detta.
The Pipe Operator (Pipe): |>
Styrkan i dplyr är möjligheten att kedja operationer (händelser). I dplyr kan vi utföra operationer sekventiellt med hjälp av pipe som har tecknet |>
. Tidigare användes %>%
som pipe-operator men sedan 2021 är detta ändrat till |>
. Kortkommandot för pipe är Cmd+Shift+M
på Mac och Ctrl + Shift + M
på Windows och Linux.
Pipe är magisk! Pipe tar nämligen resultatet av varje operation och skickar vidare detta som första argument i nästa operation. Ett exempel på detta följer, med kommentarer nedanför:
mpg |>
select(displ, cty, cyl) |>
mutate(ny_variabel = displ*cyl)
- På rad 1 startar vi med
mpg
data som vi skickar vidare till rad 2 med|>
. - På rad 2 väljer vi att behålla tre kolumner:
displ
,cty
och
cyl
. Resultatet blir en ny dataframe som bara innehåller dessa tre variabler. Denna dataframe skickar vidare som första argument på rad 3. - På rad 3 används
mutate()
för att skapa variabelnny_variabel
, som är produkten avdispl
ochcyl
.
Således används pipe (|>
) för att kedja operationer med dplyr.