Relative age-standardised mortality
Analysis from the Office for National Statistics compares European nations.
In my co-written book Covid by Numbers, a graph shows relative age-standardised mortality. The graph in the book has a production error, where the UK lines do not have correct alignment. The original version, made in R, looks like:
What are relative age-standardised mortality rates? To calculate age-standardised mortality, we need to find mortality rates within age groups. Next, analysts calculate the weighted average of these age-specific rates. The weights come from a standard population, here: the 2013 European Standard population. This index is then
The Office for National Statistics updated their analysis. Now, we can update this graph. In the original version, I uploaded a spreadsheet containing the mortality statistics. This time, I want to draw straight from the online file. That helps make the code more reproducible.
To achieve that goal, I use the curl package:
temp <- tempfile()
temp <- curl_download(url = ons_rasmr_url, destfile = temp,
quiet = TRUE, mode = "wb")
ons_rasmr_tbl <- read_excel(temp,
sheet = ons_rasmr_sheet,
range = ons_rasmr_range)
The main table has columns, writing weeks in the format ‘YYYYWXX’. For instance, the first week of 2020 would be 2020W01.
There is a secondary table containing week dates and numbers. Using a formatting function, I create a new column with those column names:
ons_week_sheet <- "Week number dates "
ons_week_range <- "A8:D357"
ons_week_tbl <- read_excel(temp,
sheet = ons_week_sheet,
range = ons_week_range)
ons_week_number_df <- ons_week_tbl %>%
week_number = paste0(year, "W", formatC(week, flag = 0, width = 2)),
start_date = as_date(start_date),
end_date = as_date(end_date)) %>%
week_start_date = start_date,
week_end_date = end_date)
The main table has missing values, with ‘z’. That means the data was not available. In R, drawing that table would mean the extant values get…