Agricultural Production Statistics in New Zealand

View data on TidyTuesday

This week’s dataset is on New Zealand agriculture, complete with this quote from a May 2025 article:

The gap between people and sheep in New Zealand is rapidly closing. There’s now about 4.5 sheep to every person in New Zealand compared to a peak of 22 sheep per person in the 1980s, that’s according to figures released by Stats NZ this week.

I went with the obvious one and put the total population of sheep, cattle, pigs, and poultry on a chart. (Most of my investment this week was developing this time-series line chart for Uncharted—plus integrating Font Awesome for the icons.)

The thing that almost got me was that they had “Total Cattle” up through 1999, and then I was only seeing “Total Beef Cattle” and “Total Dairy Cattle (including Bobby Calves)” broken out. I initially assumed this was when they’d introduced this breakdown, but eventually I realized they’d had those categories all along; they just also had the total for the first few decades of cattle data. So I was doubling the count until I caught that.

The Rise and Fall of the SheepPopulation of New Zealand livestock from 1935 to 2024
80.0M40.0M0Population
194019501960197019801990200020102020
SheepCattlePigsPoultry

The Query

Most of the convoluted transformation here was doing some replacements to turn the records I wanted into simple sheep/cattle/pigs/poultry. I also had to specifically get the beef and dairy cattle and sum them, to exclude the “Total Cattle” records that were throwing off my data at first.

with

animal_types as (
     select year_ended_june as year,
            lower(trim(regexp_replace(measure, '^Total|\(including Bobby Calves\)$', '', 'g'))) as animal,
            value

       from "https://raw.githubusercontent.com/rfordatascience/tidytuesday/main/data/2026/2026-02-17/dataset.csv"
      where animal in ('sheep', 'beef cattle', 'dairy cattle', 'pigs', 'poultry')
),

pivot_animals as (
      pivot animal_types on animal
      using sum(value)
   order by year
)

   select * exclude ("beef cattle", "dairy cattle"),
          "beef cattle" + "dairy cattle" as cattle
     from pivot_animals