PART C: CONTEXT

# List of packages
packages <- c("tidyverse", "modelsummary", "flextable",
              "fst", "viridis", "knitr", "kableExtra", "rmarkdown", "ggridges", "questionr")

# Install packages if they aren't installed already
new_packages <- packages[!(packages %in% installed.packages()[,"Package"])]
if(length(new_packages)) install.packages(new_packages)

# Load the packages
lapply(packages, library, character.only = TRUE)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.0
## ✔ 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: 'flextable'
## 
## 
## The following object is masked from 'package:purrr':
## 
##     compose
## 
## 
## Loading required package: viridisLite
## 
## 
## Attaching package: 'kableExtra'
## 
## 
## The following objects are masked from 'package:flextable':
## 
##     as_image, footnote
## 
## 
## The following object is masked from 'package:dplyr':
## 
##     group_rows
## [[1]]
##  [1] "lubridate" "forcats"   "stringr"   "dplyr"     "purrr"     "readr"    
##  [7] "tidyr"     "tibble"    "ggplot2"   "tidyverse" "stats"     "graphics" 
## [13] "grDevices" "utils"     "datasets"  "methods"   "base"     
## 
## [[2]]
##  [1] "modelsummary" "lubridate"    "forcats"      "stringr"      "dplyr"       
##  [6] "purrr"        "readr"        "tidyr"        "tibble"       "ggplot2"     
## [11] "tidyverse"    "stats"        "graphics"     "grDevices"    "utils"       
## [16] "datasets"     "methods"      "base"        
## 
## [[3]]
##  [1] "flextable"    "modelsummary" "lubridate"    "forcats"      "stringr"     
##  [6] "dplyr"        "purrr"        "readr"        "tidyr"        "tibble"      
## [11] "ggplot2"      "tidyverse"    "stats"        "graphics"     "grDevices"   
## [16] "utils"        "datasets"     "methods"      "base"        
## 
## [[4]]
##  [1] "fst"          "flextable"    "modelsummary" "lubridate"    "forcats"     
##  [6] "stringr"      "dplyr"        "purrr"        "readr"        "tidyr"       
## [11] "tibble"       "ggplot2"      "tidyverse"    "stats"        "graphics"    
## [16] "grDevices"    "utils"        "datasets"     "methods"      "base"        
## 
## [[5]]
##  [1] "viridis"      "viridisLite"  "fst"          "flextable"    "modelsummary"
##  [6] "lubridate"    "forcats"      "stringr"      "dplyr"        "purrr"       
## [11] "readr"        "tidyr"        "tibble"       "ggplot2"      "tidyverse"   
## [16] "stats"        "graphics"     "grDevices"    "utils"        "datasets"    
## [21] "methods"      "base"        
## 
## [[6]]
##  [1] "knitr"        "viridis"      "viridisLite"  "fst"          "flextable"   
##  [6] "modelsummary" "lubridate"    "forcats"      "stringr"      "dplyr"       
## [11] "purrr"        "readr"        "tidyr"        "tibble"       "ggplot2"     
## [16] "tidyverse"    "stats"        "graphics"     "grDevices"    "utils"       
## [21] "datasets"     "methods"      "base"        
## 
## [[7]]
##  [1] "kableExtra"   "knitr"        "viridis"      "viridisLite"  "fst"         
##  [6] "flextable"    "modelsummary" "lubridate"    "forcats"      "stringr"     
## [11] "dplyr"        "purrr"        "readr"        "tidyr"        "tibble"      
## [16] "ggplot2"      "tidyverse"    "stats"        "graphics"     "grDevices"   
## [21] "utils"        "datasets"     "methods"      "base"        
## 
## [[8]]
##  [1] "rmarkdown"    "kableExtra"   "knitr"        "viridis"      "viridisLite" 
##  [6] "fst"          "flextable"    "modelsummary" "lubridate"    "forcats"     
## [11] "stringr"      "dplyr"        "purrr"        "readr"        "tidyr"       
## [16] "tibble"       "ggplot2"      "tidyverse"    "stats"        "graphics"    
## [21] "grDevices"    "utils"        "datasets"     "methods"      "base"        
## 
## [[9]]
##  [1] "ggridges"     "rmarkdown"    "kableExtra"   "knitr"        "viridis"     
##  [6] "viridisLite"  "fst"          "flextable"    "modelsummary" "lubridate"   
## [11] "forcats"      "stringr"      "dplyr"        "purrr"        "readr"       
## [16] "tidyr"        "tibble"       "ggplot2"      "tidyverse"    "stats"       
## [21] "graphics"     "grDevices"    "utils"        "datasets"     "methods"     
## [26] "base"        
## 
## [[10]]
##  [1] "questionr"    "ggridges"     "rmarkdown"    "kableExtra"   "knitr"       
##  [6] "viridis"      "viridisLite"  "fst"          "flextable"    "modelsummary"
## [11] "lubridate"    "forcats"      "stringr"      "dplyr"        "purrr"       
## [16] "readr"        "tidyr"        "tibble"       "ggplot2"      "tidyverse"   
## [21] "stats"        "graphics"     "grDevices"    "utils"        "datasets"    
## [26] "methods"      "base"

CONTEXT - DESCRIPTIVE STATISTICS

spain_data <- read.fst("spain_data.fst")
table(spain_data$hinctnta)
## 
##    1    2    3    4    5    6    7    8    9   10   77   88   99 
## 1069 1289 1396 1400 1185 1041  908  786  772  707 1990 1251  390
table(spain_data$edulvlb)
## 
##    0  113  129  213  222  229  311  313  322  421  520  620  720  800 5555 7777 
##  987 1865   86 2484  532    7  552  928  302  609  383 1205 1475  122   10    6 
## 8888 9999 
##    6   49
table(spain_data$health)
## 
##    1    2    3    4    5    7    8    9 
## 3564 8538 5297 1793  239    6    3   12
spain_clean <- spain_data %>% 
  mutate(
    hinctnta = ifelse(hinctnta %in% c(77, 88, 99), NA, hinctnta), 
    health = ifelse(health %in% c(7, 8, 9), NA, health), 
    edulvlb = ifelse(edulvlb %in% c(5555, 7777, 8888, 9999), NA, edulvlb),
  )
spain_clean <- spain_clean %>% filter(!is.na(hinctnta), !is.na(edulvlb), !is.na(health))
table(spain_clean$hinctnta)
## 
##    1    2    3    4    5    6    7    8    9   10 
##  933 1131 1124 1109  949  908  754  689  690  609
table(spain_clean$health)
## 
##    1    2    3    4    5 
## 1600 3810 2588  797  101
table_summary <- datasummary_skim(spain_clean %>% select(hinctnta, edulvlb, health))
table_summary
Unique (#) Missing (%) Mean SD Min Median Max
hinctnta 10 0 5.0 2.7 1.0 5.0 10.0
edulvlb 14 0 333.6 232.9 0.0 222.0 800.0
health 5 0 2.3 0.9 1.0 2.0 5.0
spain_clean <- spain_clean %>%
  # Relabeling variables for clarity
  mutate(
    Income = hinctnta,      
    Education = edulvlb,      
    Health = health,     
  )

values_table_v2 <- datasummary_skim(spain_clean %>% select(Income, Education, Health))
values_table_v2
Unique (#) Missing (%) Mean SD Min Median Max
Income 10 0 5.0 2.7 1.0 5.0 10.0
Education 14 0 333.6 232.9 0.0 222.0 800.0
Health 5 0 2.3 0.9 1.0 2.0 5.0

FINAL TABLE

table1 <- datasummary_skim(spain_clean %>% dplyr::select(Health, Income, Education), title = "Table 1. Descriptive statistics of Income, Education & Health Variable", output = "flextable")
## Warning: The histogram argument is only supported for (a) output types "default",
##   "html", "kableExtra", or "gt"; (b) writing to file paths with extensions
##   ".html", ".jpg", or ".png"; and (c) Rmarkdown, knitr or Quarto documents
##   compiled to PDF (via kableExtra)  or HTML (via kableExtra or gt). Use
##   `histogram=FALSE` to silence this warning.
table1
Table 1. Descriptive statistics of Income, Education & Health Variable

Unique (#)

Missing (%)

Mean

SD

Min

Median

Max

Health

5

0

2.3

0.9

1.0

2.0

5.0

Income

10

0

5.0

2.7

1.0

5.0

10.0

Education

14

0

333.6

232.9

0.0

222.0

800.0