# Required packages
packages <- c(
  "tidyverse",
  "gt",
  "gapminder",
  "srvyr",
  "srvyrexploR",
  "fst",
  "ggridges"
)
# For data manipulation and ggplot2
# For formatted tables
# For gapminder dataset
# For survey data
# For ANES 2020 dataset
# For reading ESS data
# For density ridge plots
# Install and load packages
new_packages <- packages[!(packages %in% installed.packages()[,"Package"])] 
if(length(new_packages)) install.packages(new_packages)
lapply(packages, library, character.only = TRUE)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
## 
## Attaching package: 'srvyr'
## 
## 
## The following object is masked from 'package:stats':
## 
##     filter
## [[1]]
##  [1] "lubridate" "forcats"   "stringr"   "dplyr"     "purrr"     "readr"    
##  [7] "tidyr"     "tibble"    "ggplot2"   "tidyverse" "stats"     "graphics" 
## [13] "grDevices" "utils"     "datasets"  "methods"   "base"     
## 
## [[2]]
##  [1] "gt"        "lubridate" "forcats"   "stringr"   "dplyr"     "purrr"    
##  [7] "readr"     "tidyr"     "tibble"    "ggplot2"   "tidyverse" "stats"    
## [13] "graphics"  "grDevices" "utils"     "datasets"  "methods"   "base"     
## 
## [[3]]
##  [1] "gapminder" "gt"        "lubridate" "forcats"   "stringr"   "dplyr"    
##  [7] "purrr"     "readr"     "tidyr"     "tibble"    "ggplot2"   "tidyverse"
## [13] "stats"     "graphics"  "grDevices" "utils"     "datasets"  "methods"  
## [19] "base"     
## 
## [[4]]
##  [1] "srvyr"     "gapminder" "gt"        "lubridate" "forcats"   "stringr"  
##  [7] "dplyr"     "purrr"     "readr"     "tidyr"     "tibble"    "ggplot2"  
## [13] "tidyverse" "stats"     "graphics"  "grDevices" "utils"     "datasets" 
## [19] "methods"   "base"     
## 
## [[5]]
##  [1] "srvyrexploR" "srvyr"       "gapminder"   "gt"          "lubridate"  
##  [6] "forcats"     "stringr"     "dplyr"       "purrr"       "readr"      
## [11] "tidyr"       "tibble"      "ggplot2"     "tidyverse"   "stats"      
## [16] "graphics"    "grDevices"   "utils"       "datasets"    "methods"    
## [21] "base"       
## 
## [[6]]
##  [1] "fst"         "srvyrexploR" "srvyr"       "gapminder"   "gt"         
##  [6] "lubridate"   "forcats"     "stringr"     "dplyr"       "purrr"      
## [11] "readr"       "tidyr"       "tibble"      "ggplot2"     "tidyverse"  
## [16] "stats"       "graphics"    "grDevices"   "utils"       "datasets"   
## [21] "methods"     "base"       
## 
## [[7]]
##  [1] "ggridges"    "fst"         "srvyrexploR" "srvyr"       "gapminder"  
##  [6] "gt"          "lubridate"   "forcats"     "stringr"     "dplyr"      
## [11] "purrr"       "readr"       "tidyr"       "tibble"      "ggplot2"    
## [16] "tidyverse"   "stats"       "graphics"    "grDevices"   "utils"      
## [21] "datasets"    "methods"     "base"

Task 1. Global Life Expectancy Changes (3 points) a. Data Manipulation (gapminder data) • Filter for years 1987 and 2007 • Calculate mean life expectancy by continent for each year • Calculate the change between years • In a separate step, filter to five focal countries (Niger, Bangladesh, El Salvador, Iraq, Zimbabwe) Note: My Columns Are: country, continent, year, lifeExp, pop, gdpPercap

life_exp_summary <- gapminder %>%
  filter(year %in% c(1987, 2007)) %>%
  group_by(continent, country) %>%
  summarize(
    start_life = first(lifeExp),
    end_life = last(lifeExp),
    change = end_life - start_life,
    avg_life = mean(lifeExp),
    .groups = "drop"
  ) %>%
  arrange(avg_life)
life_exp_summary
## # A tibble: 142 × 6
##    continent country       start_life end_life  change avg_life
##    <fct>     <fct>              <dbl>    <dbl>   <dbl>    <dbl>
##  1 Africa    Sierra Leone        40.0     42.6  2.56       41.3
##  2 Africa    Angola              39.9     42.7  2.83       41.3
##  3 Asia      Afghanistan         40.8     43.8  3.01       42.3
##  4 Africa    Mozambique          42.9     42.1 -0.779      42.5
##  5 Africa    Guinea-Bissau       41.2     46.4  5.14       43.8
##  6 Africa    Rwanda              44.0     46.2  2.22       45.1
##  7 Africa    Liberia             46.0     45.7 -0.349      45.9
##  8 Africa    Somalia             44.5     48.2  3.66       46.3
##  9 Africa    Zambia              50.8     42.4 -8.44       46.6
## 10 Africa    Nigeria             46.9     46.9 -0.0270     46.9
## # ℹ 132 more rows
key_cases <- life_exp_summary %>%
  filter(country %in% c("Niger", "Bangladesh", "El Salvador", "Iraq",
"Zimbabwe"))

key_cases
## # A tibble: 5 × 6
##   continent country     start_life end_life change avg_life
##   <fct>     <fct>            <dbl>    <dbl>  <dbl>    <dbl>
## 1 Africa    Niger             44.6     56.9  12.3      50.7
## 2 Africa    Zimbabwe          62.4     43.5 -18.9      52.9
## 3 Asia      Bangladesh        52.8     64.1  11.2      58.4
## 4 Asia      Iraq              65.0     59.5  -5.50     62.3
## 5 Americas  El Salvador       63.2     71.9   8.72     67.5