packages <- c("tidyverse", "fst", "modelsummary")
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.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
## [[1]]
## [1] "lubridate" "forcats" "stringr" "dplyr" "purrr" "readr"
## [7] "tidyr" "tibble" "ggplot2" "tidyverse" "stats" "graphics"
## [13] "grDevices" "utils" "datasets" "methods" "base"
##
## [[2]]
## [1] "fst" "lubridate" "forcats" "stringr" "dplyr" "purrr"
## [7] "readr" "tidyr" "tibble" "ggplot2" "tidyverse" "stats"
## [13] "graphics" "grDevices" "utils" "datasets" "methods" "base"
##
## [[3]]
## [1] "modelsummary" "fst" "lubridate" "forcats" "stringr"
## [6] "dplyr" "purrr" "readr" "tidyr" "tibble"
## [11] "ggplot2" "tidyverse" "stats" "graphics" "grDevices"
## [16] "utils" "datasets" "methods" "base"
Provide code and answer.
Prompt and question: calculate the average for the variable ‘happy’ for the country of Norway. On average, based on the ESS data, who reports higher levels of happiness: Norway or Belgium?
Note: we already did it for Belgium. You just need to compare to Norway’s average, making sure to provide the code for both.
norway_data <- read.fst("/Users/mac/Desktop/norway_data.fst")
norway_happy <- norway_data %>%
filter(cntry == "NO") %>%
select(happy)
norway_happy$y <- norway_happy$happy
table(norway_happy$y)
##
## 0 1 2 3 4 5 6 7 8 9 10 77 88
## 15 29 59 163 238 730 817 2617 5235 3796 2344 12 10
norway_happy$y[norway_happy$y %in% c(77:88)] <- NA
table(norway_happy$y)
##
## 0 1 2 3 4 5 6 7 8 9 10
## 15 29 59 163 238 730 817 2617 5235 3796 2344
norway_happy_mean <- mean(norway_happy$y, na.rm = TRUE)
cat("Mean of 'norway_happy' is:", norway_happy_mean, "\n")
## Mean of 'norway_happy' is: 7.975005
belgium_data <- read.fst("/Users/mac/Desktop/belgium_data.fst")
belgium_happy <- belgium_data %>%
filter(cntry == "BE") %>%
select(happy)
belgium_happy$y <- belgium_happy$happy
table(belgium_happy$y)
##
## 0 1 2 3 4 5 6 7 8 9 10 77 88 99
## 50 27 104 194 234 830 999 3503 6521 3402 1565 3 16 3
belgium_happy$y[belgium_happy$y %in% 77:99] <- NA
table(belgium_happy$y)
##
## 0 1 2 3 4 5 6 7 8 9 10
## 50 27 104 194 234 830 999 3503 6521 3402 1565
belgium_happy_mean <- mean(belgium_happy$y, na.rm = TRUE)
cat("Mean of 'belgium_happy' is:", belgium_happy_mean, "\n")
## Mean of 'belgium_happy' is: 7.737334
Answer: The Norway’s average is 7.975, and the Belgium’s average is 7.737. So Norway reports higher levels of happiness.
Provide code and answer.
Prompt and question: what is the most common category selected, for Irish respondents, for frequency of binge drinking? The variable of interest is: alcbnge.
More info here: https://ess-search.nsd.no/en/variable/0c65116e-7481-4ca6-b1d9-f237db99a694.
Hint: need to convert numeric value entries to categories as specified in the variable information link. We did similar steps for Estonia and the climate change attitude variable.
ireland_data <- read.fst("/Users/mac/Desktop/ireland_data.fst")
ireland_alcbnge <- ireland_data %>%
filter(cntry == "IE") %>%
select(alcbnge)
ireland_data$alcbnge_category <- case_when(
ireland_data$alcbnge == 1 ~ "Never",
ireland_data$alcbnge == 2 ~ "Less than once a month",
ireland_data$alcbnge == 3 ~ "Once a month",
ireland_data$alcbnge == 4 ~ "Once a week",
ireland_data$alcbnge == 5 ~ "Daily",
TRUE ~ NA_character_
)
table(ireland_data$alcbnge_category)
##
## Daily Less than once a month Never
## 239 650 65
## Once a month Once a week
## 346 417
get_mode <- function(v) {
tbl <- table(v)
mode_vals <- as.character(names(tbl)[tbl == max(tbl)])
return(mode_vals)
}
mode_values <- get_mode(ireland_data$alcbnge_category)
cat("Most common category of binge drinking frequency in Ireland:", paste(mode_values, collapse = ", "), "\n")
## Most common category of binge drinking frequency in Ireland: Less than once a month
Provide code and answer.
Prompt and question: when you use the summary() function for the variable plnftr (about planning for future or taking every each day as it comes from 0-10) for both the countries of Portugal and Serbia, what do you notice? What stands out as different when you compare the two countries (note: look up the variable information on the ESS website to help with interpretation)? Explain while referring to the output generated.
portugal_data <- read.fst("/Users/mac/Desktop/portugal_data.fst")
serbia_data <- read.fst("/Users/mac/Desktop/serbia_data.fst")
portugal_plnftr <- portugal_data %>%
filter(cntry == "PT") %>%
select(plnftr)
summary_portugal <- summary(portugal_plnftr)
serbia_plnftr <- serbia_data %>%
filter(cntry == "RS") %>%
select(plnftr)
summary_serbia <- summary(serbia_plnftr)
print(summary_portugal)
## plnftr
## Min. : 0.000
## 1st Qu.: 3.000
## Median : 5.000
## Mean : 6.426
## 3rd Qu.: 8.000
## Max. :88.000
## NA's :14604
print(summary_serbia)
## plnftr
## Min. : 0.000
## 1st Qu.: 0.000
## Median : 4.000
## Mean : 4.983
## 3rd Qu.: 8.000
## Max. :88.000
## NA's :1505
Answer:I’ve observed differences between Portugal and Serbia regarding attitudes towards planning for the future (the variable plnftr). The higher median in Portugal suggests that Portuguese people are more inclined to plan for the future.
Provide code and answer.
Prompt and question: using the variables stfdem and gndr, answer the following: on average, who is more dissastified with democracy in Italy, men or women? Explain while referring to the output generated.
italy_data <- read.fst("/Users/mac/Desktop/Italy_data.fst")
italy_data <- italy_data %>%
filter(cntry == "IT") %>%
mutate(
gndr = case_when(
gndr == 1 ~ "Male",
gndr == 2 ~ "Female",
TRUE ~ as.character(gndr)
),
stfdem = ifelse(stfdem %in% c(77, 88), NA, stfdem) # Replace 'special_codes' with actual codes for NA
)
average_satisfaction_by_gender <- italy_data %>%
group_by(gndr) %>%
summarize(average_stfdem = mean(stfdem, na.rm = TRUE))
print(average_satisfaction_by_gender)
## # A tibble: 3 × 2
## gndr average_stfdem
## <chr> <dbl>
## 1 9 3.25
## 2 Female 4.69
## 3 Male 4.78
Answer: Italian women are less satisfied with democracy, beacuse the average score for women is lower than that for men.
Provide code and answer.
Prompt: Interpret the boxplot graph of stfedu and stfhlth that we generated already: according to ESS data, would we say that the median French person is more satisfied with the education system or health services? Explain.
Change the boxplot graph: provide the code to change some of the key labels: (1) Change the title to: Boxplot of satisfaction with the state of education vs. health services; (2) Remove the x-axis label; (3) Change the y-axis label to: Satisfaction (0-10).
Hint: copy the boxplot code above and just replace or cut what is asked.
france_data <- read.fst("/Users/mac/Desktop/france_data.fst")
france_data %>%
mutate(stfedu = ifelse(stfedu %in% c(77, 88, 99), NA, stfedu),
stfhlth = ifelse(stfhlth %in% c(77, 88, 99), NA, stfhlth)) %>%
select(stfedu, stfhlth) %>%
gather(variable, value, c(stfedu, stfhlth)) %>%
ggplot(aes(x = variable, y = value)) +
geom_boxplot() +
labs(y = "Satisfaction (0-10)", x = "", title = "Boxplot of satisfaction with the state of education vs. health services") +
theme_minimal()
## Warning: Removed 364 rows containing non-finite values (`stat_boxplot()`).
Answer: The satisfaction score for the state of education exceeds that for health services, indicating that the median French person has a higher level of satisfaction with education compared to health services.