Skip to content

Commit

Permalink
Added Wales IMD scores
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewgthomas committed Jul 16, 2024
1 parent e9b8a53 commit e7b16b6
Show file tree
Hide file tree
Showing 9 changed files with 2,020 additions and 2,170 deletions.
2 changes: 1 addition & 1 deletion R/data.R
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,7 @@ NULL
#' ...
#' }
#' @source \url{https://gov.wales/}
"imd_wales_lad"
"imd2019_wales_ltla22"

#' Index of Multiple Deprivation for Local Government Districts in Northern
#' Ireland
Expand Down
107 changes: 43 additions & 64 deletions data-raw/imd2019_wales_ltla22.R
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@ library(sf)
# Load package
devtools::load_all(".")

# ---- Check LTLA codes ----
# Confirming that LTLA 2021 and LTLA 2022 codes are the same for Wales
dplyr::symdiff(
geographr::lookup_ltla_ltla |>
filter(str_detect(ltla21_code, "W")) |>
pull(ltla21_code),

geographr::lookup_ltla22_ltla23 |>
filter(str_detect(ltla22_code, "W")) |>
pull(ltla22_code)
)
# ---- LSOA to LAD lookup ----
# Double-check that Welsh LTLAs didn't change codes between 2021 and 2022
geographr::lookup_ltla_ltla |>
distinct(ltla21_code, ltla22_code) |>
filter(str_detect(ltla21_code, "^W")) |>
filter(ltla21_code != ltla22_code)
#--> They didn't, so we can refer to the 2021 codes as 2022

lsoa_lad <-
geographr::lookup_lsoa11_ltla21 |>
select(lsoa11_code, ltla22_code = ltla21_code)

# ---- Population estimates in LSOAs ----
query_url <-
Expand Down Expand Up @@ -50,76 +50,55 @@ lsoa_pop <-
# Select and rename vars
lsoa_pop <-
lsoa_pop |>
select(
dplyr::select(
lsoa11_code = `LSOA Code`,
population = `All Ages`
) |>
distinct()
dplyr::distinct()

lsoa_pop_wales <-
lsoa_pop |>
filter(substr(lsoa11_code, 1, 1) == "W")
dplyr::filter(substr(lsoa11_code, 1, 1) == "W")

# ---- Aggregate IMD into MSOAs ----
wimd_lsoa <-
imd_wales_lsoa |>

rename(lsoa11_code = lsoa_code) |>

# We don't have IMD scores for Wales so just set them as zero
mutate(
IMD_score = 0,
Income_score = 0,
Employment_score = 0,
Education_score = 0,
Health_score = 0,
Crime_score = 0,
Housing_score = 0,
Access_score = 0,
Environment_score = 0
) |>

left_join(lsoa_pop) |>
left_join(
geographr::lookup_lsoa11_ltla21 |>
select(lsoa11_code, ltla22_code = ltla21_code)
)
dplyr::left_join(lsoa_pop, by = "lsoa11_code") |>
dplyr::left_join(lsoa_lad, by = "lsoa11_code")

# Aggregate into LADs
wimd_ltla22 <-
wimd_lad <-
wimd_lsoa |> aggregate_scores(IMD_score, IMD_rank, IMD_decile, ltla22_code, population)

wimd_ltla22_income <- wimd_lsoa |> aggregate_scores(Income_score, Income_rank, Income_decile, ltla22_code, population)
wimd_ltla22_employ <- wimd_lsoa |> aggregate_scores(Employment_score, Employment_rank, Employment_decile, ltla22_code, population)
wimd_ltla22_edu <- wimd_lsoa |> aggregate_scores(Education_score, Education_rank, Education_decile, ltla22_code, population)
wimd_ltla22_health <- wimd_lsoa |> aggregate_scores(Health_score, Health_rank, Health_decile, ltla22_code, population)
wimd_ltla22_crime <- wimd_lsoa |> aggregate_scores(Crime_score, Crime_rank, Crime_decile, ltla22_code, population)
wimd_ltla22_housing <- wimd_lsoa |> aggregate_scores(Housing_score, Housing_rank, Housing_decile, ltla22_code, population)
wimd_ltla22_barriers <- wimd_lsoa |> aggregate_scores(Access_score, Access_rank, Access_decile, ltla22_code, population)
wimd_ltla22_env <- wimd_lsoa |> aggregate_scores(Environment_score, Environment_rank, Environment_decile, ltla22_code, population)

wimd_ltla22_income <- wimd_ltla22_income |> dplyr::rename(Income_Proportion = Proportion, Income_Extent = Extent, Income_Score = Score)
wimd_ltla22_employ <- wimd_ltla22_employ |> dplyr::rename(Employment_Proportion = Proportion, Employment_Extent = Extent, Employment_Score = Score)
wimd_ltla22_edu <- wimd_ltla22_edu |> dplyr::rename(Education_Proportion = Proportion, Education_Extent = Extent, Education_Score = Score)
wimd_ltla22_health <- wimd_ltla22_health |> dplyr::rename(Health_Proportion = Proportion, Health_Extent = Extent, Health_Score = Score)
wimd_ltla22_crime <- wimd_ltla22_crime |> dplyr::rename(Crime_Proportion = Proportion, Crime_Extent = Extent, Crime_Score = Score)
wimd_ltla22_housing <- wimd_ltla22_housing |> dplyr::rename(Housing_Proportion = Proportion, Housing_Extent = Extent, Housing_Score = Score)
wimd_ltla22_barriers <- wimd_ltla22_barriers |> dplyr::rename(Access_Proportion = Proportion, Access_Extent = Extent, Access_Score = Score)
wimd_ltla22_env <- wimd_ltla22_env |> dplyr::rename(Environment_Proportion = Proportion, Environment_Extent = Extent, Environment_Score = Score)
wimd_lad_income <- wimd_lsoa |> aggregate_scores(Income_score, Income_rank, Income_decile, ltla22_code, population)
wimd_lad_employ <- wimd_lsoa |> aggregate_scores(Employment_score, Employment_rank, Employment_decile, ltla22_code, population)
wimd_lad_edu <- wimd_lsoa |> aggregate_scores(Education_score, Education_rank, Education_decile, ltla22_code, population)
wimd_lad_health <- wimd_lsoa |> aggregate_scores(Health_score, Health_rank, Health_decile, ltla22_code, population)
wimd_lad_crime <- wimd_lsoa |> aggregate_scores(Crime_score, Crime_rank, Crime_decile, ltla22_code, population)
wimd_lad_housing <- wimd_lsoa |> aggregate_scores(Housing_score, Housing_rank, Housing_decile, ltla22_code, population)
wimd_lad_barriers <- wimd_lsoa |> aggregate_scores(Access_score, Access_rank, Access_decile, ltla22_code, population)
wimd_lad_env <- wimd_lsoa |> aggregate_scores(Environment_score, Environment_rank, Environment_decile, ltla22_code, population)

wimd_lad_income <- wimd_lad_income |> dplyr::rename(Income_Proportion = Proportion, Income_Extent = Extent, Income_Score = Score)
wimd_lad_employ <- wimd_lad_employ |> dplyr::rename(Employment_Proportion = Proportion, Employment_Extent = Extent, Employment_Score = Score)
wimd_lad_edu <- wimd_lad_edu |> dplyr::rename(Education_Proportion = Proportion, Education_Extent = Extent, Education_Score = Score)
wimd_lad_health <- wimd_lad_health |> dplyr::rename(Health_Proportion = Proportion, Health_Extent = Extent, Health_Score = Score)
wimd_lad_crime <- wimd_lad_crime |> dplyr::rename(Crime_Proportion = Proportion, Crime_Extent = Extent, Crime_Score = Score)
wimd_lad_housing <- wimd_lad_housing |> dplyr::rename(Housing_Proportion = Proportion, Housing_Extent = Extent, Housing_Score = Score)
wimd_lad_barriers <- wimd_lad_barriers |> dplyr::rename(Access_Proportion = Proportion, Access_Extent = Extent, Access_Score = Score)
wimd_lad_env <- wimd_lad_env |> dplyr::rename(Environment_Proportion = Proportion, Environment_Extent = Extent, Environment_Score = Score)

imd2019_wales_ltla22 <-
wimd_ltla22 |>
left_join(wimd_ltla22_income, by = "ltla22_code") |>
left_join(wimd_ltla22_employ, by = "ltla22_code") |>
left_join(wimd_ltla22_edu, by = "ltla22_code") |>
left_join(wimd_ltla22_health, by = "ltla22_code") |>
left_join(wimd_ltla22_crime, by = "ltla22_code") |>
left_join(wimd_ltla22_housing, by = "ltla22_code") |>
left_join(wimd_ltla22_barriers, by = "ltla22_code") |>
left_join(wimd_ltla22_env, by = "ltla22_code") |>

# Don't have scores for Wales so drop these columns
select(-ends_with("Score"))
wimd_lad |>
dplyr::left_join(wimd_lad_income, by = "ltla22_code") |>
dplyr::left_join(wimd_lad_employ, by = "ltla22_code") |>
dplyr::left_join(wimd_lad_edu, by = "ltla22_code") |>
dplyr::left_join(wimd_lad_health, by = "ltla22_code") |>
dplyr::left_join(wimd_lad_crime, by = "ltla22_code") |>
dplyr::left_join(wimd_lad_housing, by = "ltla22_code") |>
dplyr::left_join(wimd_lad_barriers, by = "ltla22_code") |>
dplyr::left_join(wimd_lad_env, by = "ltla22_code")

# Save output to data/ folder
usethis::use_data(imd2019_wales_ltla22, overwrite = TRUE)
Expand Down
Loading

0 comments on commit e7b16b6

Please sign in to comment.