## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  eval = FALSE
)

## ----library------------------------------------------------------------------
# library(unicefData)
# library(dplyr)

## ----south-asia-trends--------------------------------------------------------
# # Fetch under-5 mortality for South Asian countries
# df <- unicefData(
#   indicator = "CME_MRY0T4",
#   countries = c("AFG", "BGD", "BTN", "IND", "MDV", "NPL", "PAK", "LKA")
# )
# 
# # Filter to total (both sexes)
# df_total <- df %>% filter(sex == "_T" | is.na(sex))
# 
# # Plot trends
# plot(
#   value ~ period,
#   data = df_total[df_total$iso3 == "AFG", ],
#   type = "l", col = "red", lwd = 2,
#   ylim = range(df_total$value, na.rm = TRUE),
#   xlab = "Year", ylab = "Under-5 mortality rate (per 1,000)",
#   main = "U5MR Trends in South Asia"
# )
# lines(value ~ period, data = df_total[df_total$iso3 == "BGD", ], col = "blue", lwd = 2)
# lines(value ~ period, data = df_total[df_total$iso3 == "IND", ], col = "green", lwd = 2)
# lines(value ~ period, data = df_total[df_total$iso3 == "PAK", ], col = "orange", lwd = 2)
# legend("topright",
#   legend = c("Afghanistan", "Bangladesh", "India", "Pakistan"),
#   col = c("red", "blue", "green", "orange"), lwd = 2
# )

## ----stunting-wealth----------------------------------------------------------
# # Fetch stunting data with all wealth quintiles
# df <- unicefData(
#   indicator = "NT_ANT_HAZ_NE2",
#   sex = "ALL",
#   wealth = "ALL",
#   latest = TRUE
# )
# 
# # Filter to wealth quintiles only
# df_wealth <- df %>%
#   filter(wealth_quintile %in% c("Q1", "Q2", "Q3", "Q4", "Q5"))
# 
# # Average stunting by wealth quintile (global)
# summary_wealth <- df_wealth %>%
#   group_by(wealth_quintile) %>%
#   summarise(mean_stunting = mean(value, na.rm = TRUE), .groups = "drop") %>%
#   arrange(wealth_quintile)
# 
# print(summary_wealth)
# 
# # Visualize the wealth gradient
# barplot(
#   summary_wealth$mean_stunting,
#   names.arg = summary_wealth$wealth_quintile,
#   ylab = "Stunting prevalence (%)",
#   main = "Child Stunting by Wealth Quintile",
#   col = c("#d73027", "#fc8d59", "#fee090", "#91bfdb", "#4575b4")
# )

## ----wealth-gap---------------------------------------------------------------
# # Fetch stunting for specific countries with Q1 and Q5
# df <- unicefData(
#   indicator = "NT_ANT_HAZ_NE2",
#   countries = c("IND", "PAK", "BGD", "ETH"),
#   wealth = "ALL",
#   latest = TRUE
# )
# 
# # Compute wealth gap (Q1 - Q5 = poorest minus richest)
# df_gap <- df %>%
#   filter(wealth_quintile %in% c("Q1", "Q5")) %>%
#   tidyr::pivot_wider(
#     id_cols = c(iso3, country),
#     names_from = wealth_quintile,
#     values_from = value
#   ) %>%
#   mutate(wealth_gap = Q1 - Q5) %>%
#   arrange(desc(wealth_gap))
# 
# print(df_gap)

## ----multi-mortality----------------------------------------------------------
# # Fetch multiple mortality indicators
# df <- unicefData(
#   indicator = c("CME_MRM0", "CME_MRY0T4"),
#   countries = c("BRA", "MEX", "ARG", "COL", "PER", "CHL"),
#   year = "2020:2023"
# )
# 
# # Keep latest year per country-indicator
# df_latest <- df %>%
#   filter(sex == "_T" | is.na(sex)) %>%
#   group_by(iso3, indicator) %>%
#   slice_max(period, n = 1) %>%
#   ungroup()
# 
# # Reshape wide for comparison
# df_wide <- df_latest %>%
#   select(iso3, country, indicator, value) %>%
#   tidyr::pivot_wider(names_from = indicator, values_from = value)
# 
# print(df_wide)

## ----immunization-trends------------------------------------------------------
# # Fetch immunization indicators
# df <- unicefData(
#   indicator = c("IM_DTP3", "IM_MCV1"),
#   year = "2000:2023"
# )
# 
# # Global average by year and indicator
# trends <- df %>%
#   group_by(period, indicator) %>%
#   summarise(coverage = mean(value, na.rm = TRUE), .groups = "drop")
# 
# # Plot
# dtp3 <- trends[trends$indicator == "IM_DTP3", ]
# mcv1 <- trends[trends$indicator == "IM_MCV1", ]
# 
# plot(coverage ~ period, data = dtp3, type = "l", col = "blue", lwd = 2,
#      ylim = c(60, 95), xlab = "Year", ylab = "Coverage (%)",
#      main = "Global Immunization Coverage Trends")
# lines(coverage ~ period, data = mcv1, col = "red", lwd = 2)
# legend("bottomright", legend = c("DTP3", "MCV1"),
#        col = c("blue", "red"), lwd = 2)

## ----regional-----------------------------------------------------------------
# # Fetch with regional classifications
# df <- unicefData(
#   indicator = "CME_MRY0T4",
#   add_metadata = c("region", "income_group"),
#   latest = TRUE
# )
# 
# # Filter to countries only (exclude regional aggregates)
# df_countries <- df %>%
#   filter(geo_type == 0, sex == "_T" | is.na(sex))
# 
# # Average U5MR by region
# by_region <- df_countries %>%
#   group_by(region) %>%
#   summarise(avg_u5mr = mean(value, na.rm = TRUE), .groups = "drop") %>%
#   arrange(desc(avg_u5mr))
# 
# print(by_region)
# 
# # Average U5MR by income group
# by_income <- df_countries %>%
#   group_by(income_group) %>%
#   summarise(avg_u5mr = mean(value, na.rm = TRUE), .groups = "drop") %>%
#   arrange(desc(avg_u5mr))
# 
# print(by_income)

## ----wide-timeseries----------------------------------------------------------
# # Wide format: years as columns
# df_wide <- unicefData(
#   indicator = "CME_MRY0T4",
#   countries = c("USA", "BRA", "IND", "CHN"),
#   year = "2015:2023",
#   format = "wide"
# )
# 
# # Compute change over time
# # Columns will be named yr2015, yr2016, ..., yr2023
# # (exact names depend on available data)
# print(df_wide)

## ----wide-indicators----------------------------------------------------------
# # One column per indicator
# df_cross <- unicefData(
#   indicator = c("CME_MRY0T4", "CME_MRY0", "IM_DTP3", "IM_MCV1"),
#   countries = c("AFG", "ETH", "PAK", "NGA"),
#   latest = TRUE,
#   format = "wide_indicators"
# )
# 
# print(df_cross)
# 
# # Correlation between mortality and immunization
# if (all(c("CME_MRY0T4", "IM_DTP3") %in% names(df_cross))) {
#   cor_val <- cor(df_cross$CME_MRY0T4, df_cross$IM_DTP3, use = "complete.obs")
#   message("Correlation between U5MR and DTP3: ", round(cor_val, 3))
# }

## ----sex-gap------------------------------------------------------------------
# # Fetch all sex categories
# df <- unicefData(
#   indicator = "CME_MRY0T4",
#   countries = c("IND", "PAK", "BGD"),
#   year = 2020,
#   sex = "ALL"
# )
# 
# # Compute male-female gap (biological pattern: male > female)
# df_gap <- df %>%
#   filter(sex %in% c("M", "F")) %>%
#   tidyr::pivot_wider(
#     id_cols = c(iso3, country, period),
#     names_from = sex,
#     values_from = value
#   ) %>%
#   mutate(mf_gap = M - F)
# 
# print(df_gap)

## ----nutrition----------------------------------------------------------------
# # Stunting prevalence
# df_stunting <- unicefData(indicator = "NT_ANT_HAZ_NE2", latest = TRUE)
# 
# # Stunting by wealth (poorest quintile only)
# df_q1 <- unicefData(
#   indicator = "NT_ANT_HAZ_NE2",
#   wealth = "Q1",
#   latest = TRUE
# )
# 
# # Stunting by residence (rural only)
# df_rural <- unicefData(
#   indicator = "NT_ANT_HAZ_NE2",
#   residence = "R",
#   latest = TRUE
# )

## ----wash---------------------------------------------------------------------
# # Basic drinking water services
# df_water <- unicefData(indicator = "WS_PPL_W-B", latest = TRUE)
# 
# # Basic sanitation services
# df_sanitation <- unicefData(indicator = "WS_PPL_S-B", latest = TRUE)

## ----education----------------------------------------------------------------
# # Out-of-school rate (primary)
# df_oos <- unicefData(indicator = "ED_ROFST_L1", latest = TRUE)
# 
# # Net attendance rate (primary)
# df_nar <- unicefData(indicator = "ED_ANAR_L1", latest = TRUE)

## ----defensive----------------------------------------------------------------
# # Process multiple indicators, some of which may not exist
# indicators <- c("CME_MRY0T4", "IM_DTP3", "INVALID_CODE_XYZ")
# 
# results <- list()
# for (ind in indicators) {
#   tryCatch({
#     results[[ind]] <- unicefData(indicator = ind, countries = "BRA", latest = TRUE)
#     message("OK: ", ind, " (", nrow(results[[ind]]), " rows)")
#   }, error = function(e) {
#     message("FAIL: ", ind, " - ", conditionMessage(e))
#   })
# }

## ----export-------------------------------------------------------------------
# # Fetch and export to CSV
# df <- unicefData(
#   indicator = "CME_MRY0T4",
#   countries = c("ALB", "USA", "BRA", "IND", "CHN", "NGA"),
#   year = "2015:2023",
#   add_metadata = c("region", "income_group")
# )
# 
# # Export
# write.csv(df, "unicef_mortality_data.csv", row.names = FALSE)

## ----sync---------------------------------------------------------------------
# # Sync all metadata
# sync_metadata()
# 
# # Or sync specific components
# sync_dataflows()
# sync_indicators()
# sync_codelists()

