To get the IMD scores (raw scores and ranked deciles) for a dataset run the following code to generate some random example postcodes:
tibble_postcodes <- tibble::tibble(postcode = c("HD1 2UT", "HD1 2UU", "HD1 2UV")) tibble_postcodes #> # A tibble: 3 × 1 #> postcode #> <chr> #> 1 HD1 2UT #> 2 HD1 2UU #> 3 HD1 2UV
Then, using the get_data()
function for a vector:
# Execution halted NHSRpopulation::get_data(postcodes) |> dplyr::select( new_postcode, result_type, lsoa_code ) #> ℹ The following postcodes are terminated: #> HD1 2UT #> and have been replaced with these current postcodes: #> HD1 2RD #> ℹ The following postcodes are invalid: #> HD1 2UV #> and have been replaced with these nearby postcodes: #> HD1 2UD #> Error in `dplyr::select()`: #> ! Can't select columns that don't exist. #> ✖ Column `postcode` doesn't exist.
Or with a data frame:
NHSRpopulation::get_data(tibble_postcodes) |> dplyr::select( postcode, new_postcode, result_type, lsoa_code ) #> ℹ The following postcodes are terminated: #> HD1 2UT #> and have been replaced with these current postcodes: #> HD1 2RD #> ℹ The following postcodes are invalid: #> HD1 2UV #> and have been replaced with these nearby postcodes: #> HD1 2UD #> Joining with `by = join_by(postcode)` #> # A tibble: 3 × 4 #> postcode new_postcode result_type lsoa_code #> <chr> <chr> <chr> <chr> #> 1 HD1 2UT HD1 2RD terminated E01011107 #> 2 HD1 2UU HD1 2UU valid E01011229 #> 3 HD1 2UV HD1 2UD autocompleted E01011229
Note that this function uses the {NHSRpostcodetools} package to offer the
opportunity to fix postcodes which are terminated or are incorrect.
This is default and appears in the column new_postcode
and does not overwrite
the original postcode
column.
Switching off this automatic fix can be done with the code and will accept both
vectors and data frames:
NHSRpopulation::get_data(tibble_postcodes, fix_invalid = FALSE) |> dplyr::select( postcode, new_postcode, result_type, lsoa_code ) #> ℹ The following postcodes are invalid: #> HD1 2UT #> but have not been successfully replaced with valid codes. #> The following postcodes are invalid: #> HD1 2UV #> but have not been successfully replaced with valid codes. #> Joining with `by = join_by(postcode)` #> # A tibble: 3 × 4 #> postcode new_postcode result_type lsoa_code #> <chr> <chr> <chr> <chr> #> 1 HD1 2UT <NA> <NA> <NA> #> 2 HD1 2UU HD1 2UU valid E01011229 #> 3 HD1 2UV <NA> <NA> <NA>
# Note that the third LSOA in this list is incorrect on purpose imd <- c("E01011107", "E01011229", "E01002") tibble_imd <- imd |> tibble::as_tibble() |> dplyr::rename(lsoa11 = value) tibble_imd #> # A tibble: 3 × 1 #> lsoa11 #> <chr> #> 1 E01011107 #> 2 E01011229 #> 3 E01002
Using the same function but with a parameter/argument to return IMD data:
NHSRpopulation::get_data(tibble_imd, url_type = "imd") |> dplyr::select( lsoa11, imd_rank, imd_decile, imd_score ) #> # A tibble: 3 × 4 #> lsoa11 imd_rank imd_decile imd_score #> <chr> <int> <int> <dbl> #> 1 E01011107 2928 1 45.6 #> 2 E01011229 9558 3 27.0 #> 3 E01002 NA NA NA
Data can be either vectors or data frames.
No corrections are made to incorrect LSOA codes.
Where data frames are used the expectation of the functions is that postcodes
will be in a column called postcode
and IMD will be from lsoa11
, however,
this can be overwritten:
The argument/parameter column =
can be used to set the column name:
# Create datasets pcs_tb <- dplyr::tibble( pcs = postcodes ) pcs_tb #> # A tibble: 3 × 1 #> pcs #> <chr> #> 1 HD1 2UT #> 2 HD1 2UU #> 3 HD1 2UV NHSRpopulation::get_data(pcs_tb, column = "pcs" ) #> ℹ The following postcodes are terminated: #> HD1 2UT #> and have been replaced with these current postcodes: #> HD1 2RD #> ℹ The following postcodes are invalid: #> HD1 2UV #> and have been replaced with these nearby postcodes: #> HD1 2UD #> Joining with `by = join_by(pcs)` #> # A tibble: 3 × 40 #> pcs new_postcode result_type quality eastings northings country nhs_ha longitude latitude european_electoral_r…¹ primary_care_trust region lsoa msoa incode #> <chr> <chr> <chr> <int> <int> <int> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> #> 1 HD1 2UT HD1 2RD terminated 1 414639 416430 England Yorkshir… -1.78 53.6 Yorkshire and The Hum… Kirklees Yorks… Kirk… Kirk… 2RD #> 2 HD1 2UU HD1 2UU valid 1 414433 416422 England Yorkshir… -1.78 53.6 Yorkshire and The Hum… Kirklees Yorks… Kirk… Kirk… 2UU #> 3 HD1 2UV HD1 2UD autocompleted 1 414371 416317 England Yorkshir… -1.78 53.6 Yorkshire and The Hum… Kirklees Yorks… Kirk… Kirk… 2UD #> # ℹ abbreviated name: ¹european_electoral_region #> # ℹ 24 more variables: outcode <chr>, parliamentary_constituency <chr>, parliamentary_constituency_2024 <chr>, admin_district <chr>, parish <chr>, #> # date_of_introduction <chr>, admin_ward <chr>, ccg <chr>, nuts <chr>, pfa <chr>, admin_district_code <chr>, admin_county_code <chr>, admin_ward_code <chr>, #> # parish_code <chr>, parliamentary_constituency_code <chr>, parliamentary_constituency_2024_code <chr>, ccg_code <chr>, ccg_id_code <chr>, ced_code <chr>, #> # nuts_code <chr>, lsoa_code <chr>, msoa_code <chr>, lau2_code <chr>, pfa_code <chr>
lsoa_tb <- dplyr::tibble( lower_soa = imd ) lsoa_tb #> # A tibble: 3 × 1 #> lower_soa #> <chr> #> 1 E01011107 #> 2 E01011229 #> 3 E01002 NHSRpopulation::get_data(lsoa_tb, column = "lower_soa" ) #> # A tibble: 3 × 66 #> lower_soa fid lsoa11nm lsoa11nmw st_areasha st_lengths imd_rank imd_decile lsoa01nm la_dcd la_dnm imd_score imd_rank0 imd_dec0 inc_score inc_rank inc_dec emp_score #> <chr> <int> <chr> <chr> <dbl> <dbl> <int> <int> <chr> <chr> <chr> <dbl> <int> <int> <dbl> <int> <int> <dbl> #> 1 E01011107 11200 Kirklees… Kirklees… 1921709. 7525. 2928 1 Kirklee… E0800… Kirkl… 45.6 2928 1 0.256 3753 2 0.176 #> 2 E01011229 11707 Kirklees… Kirklees… 833130. 7023. 9558 3 Kirklee… E0800… Kirkl… 27.0 9558 3 0.092 17587 6 0.068 #> 3 E01002 NA <NA> <NA> NA NA NA NA <NA> <NA> <NA> NA NA NA NA NA NA NA #> # ℹ 48 more variables: emp_rank <int>, emp_dec <int>, edu_score <dbl>, edu_rank <int>, edu_dec <int>, hdd_score <dbl>, hdd_rank <int>, hdd_dec <int>, cri_score <dbl>, #> # cri_rank <int>, cri_dec <int>, bhs_score <dbl>, bhs_rank <int>, bhs_dec <int>, env_score <dbl>, env_rank <int>, env_dec <int>, idc_score <dbl>, idc_rank <int>, #> # idc_dec <int>, ido_score <dbl>, ido_rank <int>, ido_dec <int>, cyp_score <dbl>, cyp_rank <int>, cyp_dec <int>, as_score <dbl>, as_rank <int>, as_dec <int>, #> # gb_score <dbl>, gb_rank <int>, gb_dec <int>, wb_score <dbl>, wb_rank <int>, wb_dec <int>, ind_score <dbl>, ind_rank <int>, ind_dec <int>, out_score <dbl>, #> # out_rank <int>, out_dec <int>, tot_pop <int>, dep_chi <int>, pop16_59 <int>, pop60 <int>, work_pop <dbl>, shape_area <dbl>, shape_length <dbl>
If the data has postcodes (which automatically connects to the postcode API) and
IMD information is wanted, the argument/parameter url_type == "imd"
will
override the returned data to IMD.
NHSRpopulation::get_data(tibble_postcodes, url_type = "imd") #> ℹ The following postcodes are terminated: #> HD1 2UT #> and have been replaced with these current postcodes: #> HD1 2RD #> ℹ The following postcodes are invalid: #> HD1 2UV #> and have been replaced with these nearby postcodes: #> HD1 2UD #> Joining with `by = join_by(postcode)` #> # A tibble: 3 × 105 #> postcode new_postcode result_type quality eastings northings country nhs_ha longitude latitude european_electoral_r…¹ primary_care_trust region lsoa msoa incode #> <chr> <chr> <chr> <int> <int> <int> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> #> 1 HD1 2UT HD1 2RD terminated 1 414639 416430 England Yorkshi… -1.78 53.6 Yorkshire and The Hum… Kirklees Yorks… Kirk… Kirk… 2RD #> 2 HD1 2UU HD1 2UU valid 1 414433 416422 England Yorkshi… -1.78 53.6 Yorkshire and The Hum… Kirklees Yorks… Kirk… Kirk… 2UU #> 3 HD1 2UV HD1 2UD autocompleted 1 414371 416317 England Yorkshi… -1.78 53.6 Yorkshire and The Hum… Kirklees Yorks… Kirk… Kirk… 2UD #> # ℹ abbreviated name: ¹european_electoral_region #> # ℹ 89 more variables: outcode <chr>, parliamentary_constituency <chr>, parliamentary_constituency_2024 <chr>, admin_district <chr>, parish <chr>, #> # date_of_introduction <chr>, admin_ward <chr>, ccg <chr>, nuts <chr>, pfa <chr>, admin_district_code <chr>, admin_county_code <chr>, admin_ward_code <chr>, #> # parish_code <chr>, parliamentary_constituency_code <chr>, parliamentary_constituency_2024_code <chr>, ccg_code <chr>, ccg_id_code <chr>, ced_code <chr>, #> # nuts_code <chr>, lsoa_code <chr>, msoa_code <chr>, lau2_code <chr>, pfa_code <chr>, fid <int>, lsoa11nm <chr>, lsoa11nmw <chr>, st_areasha <dbl>, st_lengths <dbl>, #> # imd_rank <int>, imd_decile <int>, lsoa01nm <chr>, la_dcd <chr>, la_dnm <chr>, imd_score <dbl>, imd_rank0 <int>, imd_dec0 <int>, inc_score <dbl>, inc_rank <int>, #> # inc_dec <int>, emp_score <dbl>, emp_rank <int>, emp_dec <int>, edu_score <dbl>, edu_rank <int>, edu_dec <int>, hdd_score <dbl>, hdd_rank <int>, hdd_dec <int>, …
Note that the postcode data is still validated.
NHSRpopulation::get_data(tibble_postcodes, url_type = "imd", fix_invalid = FALSE) #> ℹ The following postcodes are invalid: #> HD1 2UT #> but have not been successfully replaced with valid codes. #> The following postcodes are invalid: #> HD1 2UV #> but have not been successfully replaced with valid codes. #> Joining with `by = join_by(postcode)` #> # A tibble: 3 × 105 #> postcode new_postcode result_type quality eastings northings country nhs_ha longitude latitude european_electoral_r…¹ primary_care_trust region lsoa msoa incode #> <chr> <chr> <chr> <int> <int> <int> <chr> <chr> <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> #> 1 HD1 2UT <NA> <NA> NA NA NA <NA> <NA> NA NA <NA> <NA> <NA> <NA> <NA> <NA> #> 2 HD1 2UU HD1 2UU valid 1 414433 416422 England Yorkshire… -1.78 53.6 Yorkshire and The Hum… Kirklees Yorks… Kirk… Kirk… 2UU #> 3 HD1 2UV <NA> <NA> NA NA NA <NA> <NA> NA NA <NA> <NA> <NA> <NA> <NA> <NA> #> # ℹ abbreviated name: ¹european_electoral_region #> # ℹ 89 more variables: outcode <chr>, parliamentary_constituency <chr>, parliamentary_constituency_2024 <chr>, admin_district <chr>, parish <chr>, #> # date_of_introduction <chr>, admin_ward <chr>, ccg <chr>, nuts <chr>, pfa <chr>, admin_district_code <chr>, admin_county_code <chr>, admin_ward_code <chr>, #> # parish_code <chr>, parliamentary_constituency_code <chr>, parliamentary_constituency_2024_code <chr>, ccg_code <chr>, ccg_id_code <chr>, ced_code <chr>, #> # nuts_code <chr>, lsoa_code <chr>, msoa_code <chr>, lau2_code <chr>, pfa_code <chr>, fid <int>, lsoa11nm <chr>, lsoa11nmw <chr>, st_areasha <dbl>, st_lengths <dbl>, #> # imd_rank <int>, imd_decile <int>, lsoa01nm <chr>, la_dcd <chr>, la_dnm <chr>, imd_score <dbl>, imd_rank0 <int>, imd_dec0 <int>, inc_score <dbl>, inc_rank <int>, #> # inc_dec <int>, emp_score <dbl>, emp_rank <int>, emp_dec <int>, edu_score <dbl>, edu_rank <int>, edu_dec <int>, hdd_score <dbl>, hdd_rank <int>, hdd_dec <int>, …
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.