TidyTuesday
    • About TidyTuesday
    • Datasets
      • 2025
      • 2024
      • 2023
      • 2022
      • 2021
      • 2020
      • 2019
      • 2018
    • Useful links

    On this page

    • British Library Funding
      • The Data
      • How to Participate
        • PydyTuesday: A Posit collaboration with TidyTuesday
      • Data Dictionary
        • bl_funding.csv
      • Cleaning Script

    British Library Funding

    This week we’re looking into British Library funding! Thank you to Andy Jackson for compiling this data (and updating it with more information) and posting it on BlueSky! Also thanks to David Rosenthal’s 2017 blog for inspiring Andy’s efforts!

    I often refer back to this 2017 analysis by DSHR, which documents how the inflation-adjusted income of the British Library fell between 1999 and 2016. I referenced it in Invisible Memory Machines, but of course I was missing the data from the last eight years. Perhaps it’s all turned around since then!

    It hadn’t all turned around, and he had to jump through some hoops to compile the data. Thanks for the efforts to preserve the data, Andy!

    • What is the most variable source of data?
    • What is the most consistent?
    • Does that analysis change when adjusted for inflation?

    See Andy Jackson’s Google Sheet (where we got this dataset) for some sample charts.

    Thank you to Jon Harmon, Data Science Learning Community for curating this week’s dataset.

    The Data

    # Using R
    # Option 1: tidytuesdayR R package 
    ## install.packages("tidytuesdayR")
    
    tuesdata <- tidytuesdayR::tt_load('2025-07-15')
    ## OR
    tuesdata <- tidytuesdayR::tt_load(2025, week = 28)
    
    bl_funding <- tuesdata$bl_funding
    
    # Option 2: Read directly from GitHub
    
    bl_funding <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2025/2025-07-15/bl_funding.csv')
    # Using Python
    # Option 1: pydytuesday python library
    ## pip install pydytuesday
    
    import pydytuesday
    
    # Download files from the week, which you can then read in locally
    pydytuesday.get_date('2025-07-15')
    
    # Option 2: Read directly from GitHub and assign to an object
    
    bl_funding = pandas.read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2025/2025-07-15/bl_funding.csv')
    # Using Julia
    # Option 1: TidierTuesday.jl library
    ## Pkg.add(url="https://github.com/TidierOrg/TidierTuesday.jl")
    
    using TidierTuesday
    
    # Download files from the week, which you can then read in locally
    download_dataset('2025-07-15')
    
    # Option 2: Read directly from GitHub and assign to an object with TidierFiles
    
    bl_funding = read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2025/2025-07-15/bl_funding.csv")
    
    # Option 3: Read directly from Github and assign without Tidier dependencies
    bl_funding = CSV.read("https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2025/2025-07-15/bl_funding.csv", DataFrame)

    How to Participate

    • Explore the data, watching out for interesting relationships. We would like to emphasize that you should not draw conclusions about causation in the data. There are various moderating variables that affect all data, many of which might not have been captured in these datasets. As such, our suggestion is to use the data provided to practice your data tidying and plotting techniques, and to consider for yourself what nuances might underlie these relationships.
    • Create a visualization, a model, a Quarto report, a shiny app, or some other piece of data-science-related output, using R, Python, or another programming language.
    • Share your output and the code used to generate it on social media with the #TidyTuesday hashtag.
    • Submit your own dataset!

    PydyTuesday: A Posit collaboration with TidyTuesday

    • Exploring the TidyTuesday data in Python? Posit has some extra resources for you! Have you tried making a Quarto dashboard? Find videos and other resources in Posit’s PydyTuesday repo.
    • Share your work with the world using the hashtags #TidyTuesday and #PydyTuesday so that Posit has the chance to highlight your work, too!
    • Deploy or share your work however you want! If you’d like a super easy way to publish your work, give Connect Cloud a try.

    Data Dictionary

    bl_funding.csv

    variable class description
    year integer First year of the annual report. Eg, 2016 is for the 2016/2017 annual report.
    nominal_gbp_millions double Total reported funding in millions of Great Britain Pounds (GBP).
    gia_gbp_millions double Reported funding from grant-in-aid (the official term for the core funding from the UK government).
    voluntary_gbp_millions double Reported funding covering all voluntary contributions and donations, including the valuation of donated collection items.
    investment_gbp_millions double Reported funding from returns on savings and investments.
    services_gbp_millions double Reported funding from service delivery within the remit of being a charity. The main part of this over the years has been the document supply service, which started out as the National Lending Library for Science and Technology.
    other_gbp_millions double Reported funding from anything that doesn’t fit into the above categories.
    year_2000_gbp_millions double Funding values from the original blog post at https://blog.dshr.org/2017/08/preservation-is-not-technical-problem.html.
    inflation_adjustment double The cost in each given year of 1,000,000 GBP in terms of year 2000 GBP. Figures come from the the current (2024) Bank of England inflation calculator: https://www.bankofengland.co.uk/monetary-policy/inflation/inflation-calculator.
    total_y2000_gbp_millions double Total reported funding adjusted to Y2000 GBP.
    percentage_of_y2000_income double total_y2000_gbp_millions / total_y2000_gbp_millions for year == 2000.
    gia_y2000_gbp_millions double Grant-in-aid funding in Y2000 GBP.
    voluntary_y2000_gbp_millions double Voluntary funding in Y2000 GBP.
    investment_y2000_gbp_millions double Investment funding in Y2000 GBP.
    services_y2000_gbp_millions double Services funding in Y2000 GBP.
    other_y2000_gbp_millions double Other funding in Y2000 GBP.
    gia_as_percent_of_peak_gia double gia_y2000_gbp_millions / max(gia_y2000_gbp_millions)

    Cleaning Script

    # Data provided by Andy Jackson. See
    # https://anjackson.net/2024/11/27/updating-the-data-on-british-library-funding/
    # Minimal cleaning required.
    
    library(tidyverse)
    library(googlesheets4)
    library(janitor)
    
    # Call the auth function to make things run without prompts.
    googlesheets4::gs4_auth("jonthegeek@gmail.com")
    bl_funding <- googlesheets4::read_sheet(
      "1uxjiuWYZrALF2mthmiYbUPieu1dEdEwv9GB8dEAizso"
    ) |>
      janitor::clean_names() |>
      dplyr::mutate(
        year = as.integer(.data$year)
      )