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

    On this page

    • MTA Permanent Art Catalog
      • The Data
      • How to Participate
        • PydyTuesday: A Posit collaboration with TidyTuesday
      • Data Dictionary
        • mta_art.csv
        • station_lines.csv
      • Cleaning Script

    MTA Permanent Art Catalog

    This week we’re exploring the (New York) MTA Permanent Art Catalog! Thank you to Georgios Karamanis (GitHub | Bluesky | LinkedIn for suggesting this dataset. Submit your dataset ideas through our GitHub issue tracker!

    The MTA has a dashboard to explore this dataset, but the dashboard is at least partially broken. Can you recreate it in Shiny for R or Python?

    Through the Permanent Art Program, MTA Arts & Design (formerly Arts for Transit) commissions public art that is seen by millions of city-dwellers as well as national and international visitors who use the MTA’s subways and trains. Arts & Design works closely with the architects and engineers at MTA NYC Transit, Long Island Rail Road and Metro-North Railroad to determine the parameters and sites for the artwork that is to be incorporated into each station scheduled for renovation. A diversity of well-established, mid-career and emerging artists contribute to the growing collection of works created in the materials of the system -mosaic, ceramic, tile, bronze, steel and glass. Artists are chosen through a competitive process that uses selection panels comprised of visual arts professionals and community representatives which review and select artists. This data provides the branch or station and the artist and artwork information.

    • Can you reproduce the station_lines dataset without looking at our Cleaning Script? How does your solution differ from ours?
    • Which agency has the most art? Which has the least?
    • What are some common materials? How are details such as “hand forged” for bronze denoted in the data? Can you reliably take these details into account in your counts?

    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-22')
    ## OR
    tuesdata <- tidytuesdayR::tt_load(2025, week = 29)
    
    mta_art <- tuesdata$mta_art
    station_lines <- tuesdata$station_lines
    
    # Option 2: Read directly from GitHub
    
    mta_art <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2025/2025-07-22/mta_art.csv')
    station_lines <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2025/2025-07-22/station_lines.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-22')
    
    # Option 2: Read directly from GitHub and assign to an object
    
    mta_art = pandas.read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2025/2025-07-22/mta_art.csv')
    station_lines = pandas.read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2025/2025-07-22/station_lines.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-22')
    
    # Option 2: Read directly from GitHub and assign to an object with TidierFiles
    
    mta_art = read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2025/2025-07-22/mta_art.csv")
    station_lines = read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2025/2025-07-22/station_lines.csv")
    
    # Option 3: Read directly from Github and assign without Tidier dependencies
    mta_art = CSV.read("https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2025/2025-07-22/mta_art.csv", DataFrame)
    station_lines = CSV.read("https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2025/2025-07-22/station_lines.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

    mta_art.csv

    variable class description
    agency character This is the abbreviated code for an agency. Example: LIRR = Long Island Rail Road, MNR = Metro-North Railroad, NYCT = New York City Transit.
    station_name character This is the railroad or subway station where the art is located.
    line character This is the railroad or subway line that is associated with the station.
    artist character The artist’s name(s).
    art_title character This is the name of the piece of art.
    art_date double This is the year the art was first displayed at the station.
    art_material character This describes what materials were used in making the art.
    art_description character This is a description of the art along with other interesting facts.
    art_image_link character This is a link that can take you directly to the MTA website so you may see the available art.

    station_lines.csv

    variable class description
    agency character This is the abbreviated code for an agency. Example: LIRR = Long Island Rail Road, MNR = Metro-North Railroad, NYCT = New York City Transit.
    station_name character This is the railroad or subway station where the art is located.
    line character This is the railroad or subway line that is associated with the station.

    Cleaning Script

    # Clean data provided by the State of New York's data.ny.gov. No cleaning was
    # necessary. We split off the station_lines dataset as a demonstration.
    
    library(tidyverse)
    mta_art <- readr::read_csv("https://data.ny.gov/resource/4y8j-9pkd.csv")
    
    station_lines <- mta_art |>
      dplyr::select("agency", "station_name", "line") |>
      dplyr::filter(!is.na(.data$line)) |>
      tidyr::separate_longer_delim("line", ",")