Difference between join and column binding in data frames

library(tidyverse)
library(gapminder)
gapminder_europe <- gapminder::gapminder %>% 
  filter(continent == "Europe", year == 2007)
glimpse(gapminder_europe)
Rows: 30
Columns: 6
$ country   <fct> Albania, Austria, Belgium, Bosnia and Herzegovina, Bulgari…
$ continent <fct> Europe, Europe, Europe, Europe, Europe, Europe, Europe, Eu…
$ year      <int> 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007, 2007…
$ lifeExp   <dbl> 76.423, 79.829, 79.441, 74.852, 73.005, 75.748, 76.486, 78…
$ pop       <int> 3600523, 8199783, 10392226, 4552198, 7322858, 4493312, 102…
$ gdpPercap <dbl> 5937.030, 36126.493, 33692.605, 7446.299, 10680.793, 14619…
geo <- read_csv("https://raw.githubusercontent.com/open-numbers/ddf--gapminder--fasttrack/master/ddf--entities--geo--country.csv")
head(geo)
geo_europe <- geo %>% filter(world_4region == "europe") %>% 
  select(main_religion_2008, name, world_4region, income_groups)
glimpse(geo_europe) 
Rows: 73
Columns: 4
$ main_religion_2008 <chr> NA, NA, NA, "muslim", "christian", "christian", NA, "christian", "muslim",…
$ name               <chr> "Abkhazia", "Akrotiri and Dhekelia", "Åland", "Albania", "Andorra", "Armen…
$ world_4region      <chr> "europe", "europe", "europe", "europe", "europe", "europe", "europe", "eur…
$ income_groups      <chr> NA, NA, NA, "upper_middle_income", "high_income", "upper_middle_income", N…

We would like to add the religion and income_groups column to the gapminder_europe data frame.

The resulting data grame is going to inherit (all and only) rows from gapminder_europe, if we pursue the “inner join” operation

dplyr::inner_join(x = gapminder_europe, y = geo_europe, 
                  by = c("country" = "name")) #mind the equal sign!

We have an NA in religion in Bosnia and Herzegovina - it should already be so in the geo_europe data frame; i.e. not generated here.

geo_europe %>% filter(name == "Bosnia and Herzegovina")
dplyr::left_join(x = gapminder_europe, y = geo_europe,
                 by = c("country" = "name")) #mind the equal sign!
dplyr::right_join(x = gapminder_europe, y = geo_europe,
                 by = c("country" = "name")) #mind the equal sign!
dplyr::full_join(x = gapminder_europe, y = geo_europe,
                 by = c("country" = "name"))
anti_join(x = gapminder_europe, y = geo_europe,
                 by = c("country" = "name"))
anti_join( x = geo_europe, y = gapminder_europe,
                 by = c( "name" = "country"))
boys <- data.frame(names = c("Pepa", "Honza", "Kuba"), laps = c(10, 3, 8))
girls <- data.frame(names = c("Hanka", "Pavla", "Pepa"), laps = c(9, 5, 5))

anti_join(boys, girls, by = "names")
full_join(boys, girls, by = "names", suffix = c("_boys", "_girls"))

POLLS Exercises

SDÍLEJ OBRAZOVKU!!!!

Solutions - demonstrations

girls %>% filter(names == "Pepa") %>% inner_join(boys, by = "names")
full_join(boys, girls, by = "laps")
LS0tCnRpdGxlOiAiSm9pbiBzZXZlcmFsIHRhYmxlcyBpbnRvIG9uZSIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQogCiMgRGlmZmVyZW5jZSBiZXR3ZWVuIGpvaW4gYW5kIGNvbHVtbiBiaW5kaW5nIGluIGRhdGEgZnJhbWVzCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShnYXBtaW5kZXIpCmBgYAoKYGBge3J9CmdhcG1pbmRlcl9ldXJvcGUgPC0gZ2FwbWluZGVyOjpnYXBtaW5kZXIgJT4lIAogIGZpbHRlcihjb250aW5lbnQgPT0gIkV1cm9wZSIsIHllYXIgPT0gMjAwNykKZ2xpbXBzZShnYXBtaW5kZXJfZXVyb3BlKQpgYGAKCgpgYGB7ciBtZXNzYWdlPUZBTFNFfQpnZW8gPC0gcmVhZF9jc3YoImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vcGVuLW51bWJlcnMvZGRmLS1nYXBtaW5kZXItLWZhc3R0cmFjay9tYXN0ZXIvZGRmLS1lbnRpdGllcy0tZ2VvLS1jb3VudHJ5LmNzdiIpCmhlYWQoZ2VvKQpgYGAKYGBge3J9Cmdlb19ldXJvcGUgPC0gZ2VvICU+JSBmaWx0ZXIod29ybGRfNHJlZ2lvbiA9PSAiZXVyb3BlIikgJT4lIAogIHNlbGVjdChtYWluX3JlbGlnaW9uXzIwMDgsIG5hbWUsIHdvcmxkXzRyZWdpb24sIGluY29tZV9ncm91cHMpCmdsaW1wc2UoZ2VvX2V1cm9wZSkgCmBgYAoKV2Ugd291bGQgbGlrZSB0byBhZGQgdGhlIGByZWxpZ2lvbmAgYW5kIGBpbmNvbWVfZ3JvdXBzYCBjb2x1bW4gdG8gdGhlIApgZ2FwbWluZGVyX2V1cm9wZWAgZGF0YSBmcmFtZS4gCgpUaGUgcmVzdWx0aW5nIGRhdGEgZ3JhbWUgaXMgZ29pbmcgdG8gaW5oZXJpdCAoYWxsIGFuZCBvbmx5KSByb3dzIGZyb20gCmBnYXBtaW5kZXJfZXVyb3BlYCwgaWYgd2UgcHVyc3VlIHRoZSAiaW5uZXIgam9pbiIgb3BlcmF0aW9uCgoKCmBgYHtyfQpkcGx5cjo6aW5uZXJfam9pbih4ID0gZ2FwbWluZGVyX2V1cm9wZSwgeSA9IGdlb19ldXJvcGUsIAogICAgICAgICAgICAgICAgICBieSA9IGMoImNvdW50cnkiID0gIm5hbWUiKSkgI21pbmQgdGhlIGVxdWFsIHNpZ24hCmBgYAoKV2UgaGF2ZSBhbiBgTkFgIGluIHJlbGlnaW9uIGluIEJvc25pYSBhbmQgSGVyemVnb3ZpbmEgLSBpdCBzaG91bGQgCmFscmVhZHkgYmUgc28gaW4gdGhlIGBnZW9fZXVyb3BlYCBkYXRhIGZyYW1lOyBpLmUuIG5vdCBnZW5lcmF0ZWQgaGVyZS4KCmBgYHtyfQpnZW9fZXVyb3BlICU+JSBmaWx0ZXIobmFtZSA9PSAiQm9zbmlhIGFuZCBIZXJ6ZWdvdmluYSIpCmBgYAoKYGBge3J9CmRwbHlyOjpsZWZ0X2pvaW4oeCA9IGdhcG1pbmRlcl9ldXJvcGUsIHkgPSBnZW9fZXVyb3BlLAogICAgICAgICAgICAgICAgIGJ5ID0gYygiY291bnRyeSIgPSAibmFtZSIpKSAjbWluZCB0aGUgZXF1YWwgc2lnbiEKYGBgCgoKCmBgYHtyfQpkcGx5cjo6cmlnaHRfam9pbih4ID0gZ2FwbWluZGVyX2V1cm9wZSwgeSA9IGdlb19ldXJvcGUsCiAgICAgICAgICAgICAgICAgYnkgPSBjKCJjb3VudHJ5IiA9ICJuYW1lIikpICNtaW5kIHRoZSBlcXVhbCBzaWduIQpgYGAKCgpgYGB7cn0KZHBseXI6OmZ1bGxfam9pbih4ID0gZ2FwbWluZGVyX2V1cm9wZSwgeSA9IGdlb19ldXJvcGUsCiAgICAgICAgICAgICAgICAgYnkgPSBjKCJjb3VudHJ5IiA9ICJuYW1lIikpCmBgYAoKYGBge3J9CmFudGlfam9pbih4ID0gZ2FwbWluZGVyX2V1cm9wZSwgeSA9IGdlb19ldXJvcGUsCiAgICAgICAgICAgICAgICAgYnkgPSBjKCJjb3VudHJ5IiA9ICJuYW1lIikpCmBgYApgYGB7cn0KYW50aV9qb2luKCB4ID0gZ2VvX2V1cm9wZSwgeSA9IGdhcG1pbmRlcl9ldXJvcGUsCiAgICAgICAgICAgICAgICAgYnkgPSBjKCAibmFtZSIgPSAiY291bnRyeSIpKQpgYGAKCgpgYGB7cn0KYm95cyA8LSBkYXRhLmZyYW1lKG5hbWVzID0gYygiUGVwYSIsICJIb256YSIsICJLdWJhIiksIGxhcHMgPSBjKDEwLCAzLCA4KSkKZ2lybHMgPC0gZGF0YS5mcmFtZShuYW1lcyA9IGMoIkhhbmthIiwgIlBhdmxhIiwgIlBlcGEiKSwgbGFwcyA9IGMoOSwgNSwgNSkpCgphbnRpX2pvaW4oYm95cywgZ2lybHMsIGJ5ID0gIm5hbWVzIikKYGBgCmBgYHtyfQphbnRpX2pvaW4oZ2lybHMsIGJveXMsIGJ5ID0gIm5hbWVzIikKYGBgCgpgYGB7cn0Kc2VtaV9qb2luKGJveXMsIGdpcmxzLCBieSA9ICJuYW1lcyIpCmBgYApgYGB7cn0Kc2VtaV9qb2luKCBnaXJscywgYm95cywgYnkgPSAibmFtZXMiKQpgYGAKCmBgYHtyfQpmdWxsX2pvaW4oeCA9IGJveXMsIHkgPSBnaXJscywgYnkgPSAibmFtZXMiKQpgYGAKCmBgYHtyfQpmdWxsX2pvaW4oYm95cywgZ2lybHMsIGJ5ID0gIm5hbWVzIiwgc3VmZml4ID0gYygiX2JveXMiLCAiX2dpcmxzIikpCmBgYAoKYGBge3J9CmZ1bGxfam9pbihib3lzLCBnaXJscywgYnkgPSBjKCJuYW1lcyIsICJsYXBzIikpCmBgYAoKCiMgUE9MTFMgRXhlcmNpc2VzClNEw41MRUogT0JSQVpPVktVISEhIQpgYGB7cn0KYm95cwpgYGAKYGBge3J9CmdpcmxzCmBgYAoKCgpTb2x1dGlvbnMgLSBkZW1vbnN0cmF0aW9ucwpgYGB7cn0KZ2lybHMgJT4lIGZpbHRlcihuYW1lcyA9PSAiUGVwYSIpICU+JSBpbm5lcl9qb2luKGJveXMsIGJ5ID0gIm5hbWVzIikKYGBgCgoKCmBgYHtyfQpmdWxsX2pvaW4oYm95cywgZ2lybHMsIGJ5ID0gImxhcHMiKQpgYGAKCgoKCgoKCgoKCgoKCgoKCg==