analysis <- ltas_lookup_names |>
select(name) |>
distinct(name) |>
arrange(name)
results_analysis <- results |>
left_join(
results_names |> select(local_authority_name = name, ltas_name),
by = "local_authority_name"
)
analysis_data <- analysis |>
left_join(
results_analysis |>
mutate(pct_usage_depth = parse_number(as.character(pct_usage_depth))) |>
group_by(ltas_name) |>
summarise(
n_observations = n(),
n_mentions_pct = sum(n_mentions_pct, na.rm = TRUE),
pct_usage_depth_1 = sum(pct_usage_depth == 1, na.rm = TRUE),
pct_usage_depth_2 = sum(pct_usage_depth == 2, na.rm = TRUE),
pct_usage_depth_3 = sum(pct_usage_depth == 3, na.rm = TRUE),
n_pct_desire_lines_used = sum(pct_desire_lines_used, na.rm = TRUE)
),
by = c("name" = "ltas_name")
) |>
left_join(
atf_names |> select(name, atf20_21, atf21_22, atf22_23, atf23_24, atf24_25),
by = "name"
) |>
left_join(
atf_future_names |> select(name, cdel_per_year_4yr, rdel_per_year_3yr, total_over_4yr),
by = "name"
) |>
mutate(across(
c(atf20_21, atf21_22, atf22_23, atf23_24, atf24_25, cdel_per_year_4yr, rdel_per_year_3yr, total_over_4yr),
~ {
x <- stringr::str_squish(as.character(.x))
x[stringr::str_detect(x, stringr::regex("^invalid\\s*number$", ignore_case = TRUE))] <- NA_character_
readr::parse_number(x)
}
))
funding_5yr_cols <- c("atf20_21", "atf21_22", "atf22_23", "atf23_24", "atf24_25")
analysis_metrics <- analysis_data |>
mutate(
n_observations = replace_na(n_observations, 0),
n_mentions_pct = replace_na(n_mentions_pct, 0),
n_pct_desire_lines_used = replace_na(n_pct_desire_lines_used, 0),
pct_usage_depth_1 = replace_na(pct_usage_depth_1, 0),
pct_usage_depth_2 = replace_na(pct_usage_depth_2, 0),
pct_usage_depth_3 = replace_na(pct_usage_depth_3, 0),
n_depth_scored = pct_usage_depth_1 + pct_usage_depth_2 + pct_usage_depth_3,
depth_score_mean = if_else(
n_depth_scored > 0,
(1 * pct_usage_depth_1 + 2 * pct_usage_depth_2 + 3 * pct_usage_depth_3) / n_depth_scored,
NA_real_
),
total_over_5yr = if_else(
rowSums(!is.na(across(all_of(funding_5yr_cols)))) > 0,
rowSums(across(all_of(funding_5yr_cols)), na.rm = TRUE),
NA_real_
),
pct_mention_rate = if_else(n_observations > 0, n_mentions_pct / n_observations, NA_real_),
desire_lines_rate = if_else(n_observations > 0, n_pct_desire_lines_used / n_observations, NA_real_)
)