Joins - Week 3

Illya Mowerman

2/5/2024

What we’ll cover

Joins with tidyverse

Please load some pakages

library(tidyverse)

library(AER)
data('Affairs')

affairs <- Affairs

Basic joining verbs for today

Additional wrangling verbs

inner_join

band_members
## # A tibble: 3 × 2
##   name  band   
##   <chr> <chr>  
## 1 Mick  Stones 
## 2 John  Beatles
## 3 Paul  Beatles
band_instruments
## # A tibble: 3 × 2
##   name  plays 
##   <chr> <chr> 
## 1 John  guitar
## 2 Paul  bass  
## 3 Keith guitar
inner <- inner_join(band_members , band_instruments)
## Joining with `by = join_by(name)`
inner
## # A tibble: 2 × 3
##   name  band    plays 
##   <chr> <chr>   <chr> 
## 1 John  Beatles guitar
## 2 Paul  Beatles bass

left_join

left <- left_join(band_members , band_instruments)
## Joining with `by = join_by(name)`
left
## # A tibble: 3 × 3
##   name  band    plays 
##   <chr> <chr>   <chr> 
## 1 Mick  Stones  <NA>  
## 2 John  Beatles guitar
## 3 Paul  Beatles bass

right_join

right <- right_join(band_members , band_instruments)
## Joining with `by = join_by(name)`
left
## # A tibble: 3 × 3
##   name  band    plays 
##   <chr> <chr>   <chr> 
## 1 Mick  Stones  <NA>  
## 2 John  Beatles guitar
## 3 Paul  Beatles bass

semi_join

semi <- semi_join(band_members , band_instruments)
## Joining with `by = join_by(name)`
semi
## # A tibble: 2 × 2
##   name  band   
##   <chr> <chr>  
## 1 John  Beatles
## 2 Paul  Beatles

anti_join

anti <- anti_join(band_members , band_instruments)
## Joining with `by = join_by(name)`
anti
## # A tibble: 1 × 2
##   name  band  
##   <chr> <chr> 
## 1 Mick  Stones

Transposing: pivot_longer

cheater <- affairs %>% 
  mutate(cheater = ifelse(affairs > 0 , 1, 0))

summarise_cheater <- cheater %>% 
  group_by(children) %>% 
  summarise(mean_cheater = mean(cheater) , 
            mean_rel     = mean(religiousness))

summarise_cheater
## # A tibble: 2 × 3
##   children mean_cheater mean_rel
##   <fct>           <dbl>    <dbl>
## 1 no              0.158     2.88
## 2 yes             0.286     3.21
looonger <- summarise_cheater %>% 
  pivot_longer(cols = c(mean_cheater , mean_rel))

looonger
## # A tibble: 4 × 3
##   children name         value
##   <fct>    <chr>        <dbl>
## 1 no       mean_cheater 0.158
## 2 no       mean_rel     2.88 
## 3 yes      mean_cheater 0.286
## 4 yes      mean_rel     3.21

Transposing: pivot_wider

looonger
## # A tibble: 4 × 3
##   children name         value
##   <fct>    <chr>        <dbl>
## 1 no       mean_cheater 0.158
## 2 no       mean_rel     2.88 
## 3 yes      mean_cheater 0.286
## 4 yes      mean_rel     3.21
wider <- looonger %>% 
  pivot_wider(names_from = name , values_from = value)

wider
## # A tibble: 2 × 3
##   children mean_cheater mean_rel
##   <fct>           <dbl>    <dbl>
## 1 no              0.158     2.88
## 2 yes             0.286     3.21

Next time…

ಧನ್ಯವಾ

(Dhan’yavāda)