There are various join functions in dplyr. This page will only show the use of dplyr::inner_join(). This function joins 2 tibbles/data.frames based on a key column. This allows you to add data from matching rows similar to VLOOKUP in excel.
Tidyverse reference page
Dataset
Before demonstrating various examples we will create a 2 tibbles:
acris_records: Contain records of frogs from Acris species (Cricket frogs).
species_info: Contains IUCN and lineage information on the the 2 frog
We’ll use these for joining.
#Vectors for tibble
Species <- c ("Acris gryllus" ,"Acris blanchardi" ,"Acris blanchardi" ,"Acris crepitans" ,
"Acris crepitans" ,"Acris blanchardi" ,"Acris blanchardi" ,
"Acris blanchardi" ,"Acris gryllus" ,"Acris gryllus" )
length <- c (32 ,10 ,14 ,23 ,19 ,11 ,9 ,14 ,32 ,22 )
#Tibble
acris_records <- tibble:: tibble (Species, length)
acris_records
# A tibble: 10 × 2
Species length
<chr> <dbl>
1 Acris gryllus 32
2 Acris blanchardi 10
3 Acris blanchardi 14
4 Acris crepitans 23
5 Acris crepitans 19
6 Acris blanchardi 11
7 Acris blanchardi 9
8 Acris blanchardi 14
9 Acris gryllus 32
10 Acris gryllus 22
Acquire IUCN and lineage information from the amphibian_div_tbl data from the mgrtibbles package .
#Load package
library ("mgrtibbles" )
species_info <- mgrtibbles:: amphibian_div_tbl |>
#Select columns
dplyr:: select (Species: Genus) |>
#Extract distinct/unique rows
dplyr:: distinct () |>
#Select Acris rows
dplyr:: filter (Genus== "Acris" )
species_info
# A tibble: 3 × 6
Species IUCN.Red.List.Status iucn_2cat Order Family Genus
<chr> <fct> <fct> <chr> <chr> <chr>
1 Acris blanchardi <NA> <NA> Anura Hylidae Acris
2 Acris crepitans Least Concern (LC) LC Anura Hylidae Acris
3 Acris gryllus Least Concern (LC) LC Anura Hylidae Acris
inner_join()
Join 2 tibbles/data.frames with a key column. This key column must have the same name and matching values.
dplyr:: inner_join (
#Left tibble
acris_records,
#Right tibble
species_info,
#Key column
by = "Species"
)
# A tibble: 10 × 7
Species length IUCN.Red.List.Status iucn_2cat Order Family Genus
<chr> <dbl> <fct> <fct> <chr> <chr> <chr>
1 Acris gryllus 32 Least Concern (LC) LC Anura Hylidae Acris
2 Acris blanchardi 10 <NA> <NA> Anura Hylidae Acris
3 Acris blanchardi 14 <NA> <NA> Anura Hylidae Acris
4 Acris crepitans 23 Least Concern (LC) LC Anura Hylidae Acris
5 Acris crepitans 19 Least Concern (LC) LC Anura Hylidae Acris
6 Acris blanchardi 11 <NA> <NA> Anura Hylidae Acris
7 Acris blanchardi 9 <NA> <NA> Anura Hylidae Acris
8 Acris blanchardi 14 <NA> <NA> Anura Hylidae Acris
9 Acris gryllus 32 Least Concern (LC) LC Anura Hylidae Acris
10 Acris gryllus 22 Least Concern (LC) LC Anura Hylidae Acris
Swapping the left and right tibbles swaps their positions in the joined tibble.
dplyr:: inner_join (
#Left tibble
species_info,
#Right tibble
acris_records,
#Key column
by = "Species"
)
# A tibble: 10 × 7
Species IUCN.Red.List.Status iucn_2cat Order Family Genus length
<chr> <fct> <fct> <chr> <chr> <chr> <dbl>
1 Acris blanchardi <NA> <NA> Anura Hylidae Acris 10
2 Acris blanchardi <NA> <NA> Anura Hylidae Acris 14
3 Acris blanchardi <NA> <NA> Anura Hylidae Acris 11
4 Acris blanchardi <NA> <NA> Anura Hylidae Acris 9
5 Acris blanchardi <NA> <NA> Anura Hylidae Acris 14
6 Acris crepitans Least Concern (LC) LC Anura Hylidae Acris 23
7 Acris crepitans Least Concern (LC) LC Anura Hylidae Acris 19
8 Acris gryllus Least Concern (LC) LC Anura Hylidae Acris 32
9 Acris gryllus Least Concern (LC) LC Anura Hylidae Acris 32
10 Acris gryllus Least Concern (LC) LC Anura Hylidae Acris 22