about summary refs log tree commit diff
path: root/users/tazjin/covid/us_mortality.jq
blob: 584be3ef9afe01a2c200cf498837a9749ed1c8f8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# This turns the CDC mortality data[0] into a format useful for my
# excess mortality spreadsheet. The US format is by far the worst one
# I have dealt with, as expected.
#
# This requires miller for transforming the CSV appropriately.
#
# Params:
#  state: abbreviation of the state to extract ('US' for whole country)
#  period: time period (either "2020" for current data, or anything else
#          for historical averages)
#
# Call as:
#  mlr --icsv --ojson cat weekly.csv | \
#    jq -rsf us_mortality.jq --arg state US --arg period 2020
#
# [0]: https://www.cdc.gov/nchs/nvss/vsrr/covid19/excess_deaths.htm

def filter_period(period):
  if period == "2020"
  then . | map(select(.["Time Period"] == 2020))
  else . | map(select(.["Time Period"] == "2015-2019"))
  end;

def collate_weeks(period):
  (. | map(.["Number of Deaths"]) | add) as $count
  | {
    count: (if period == "2020" then $count else $count / 5 end),
    week: .[0].Week,
  };

. | map(select(.Type == "Predicted (weighted)"))
  | map(select(.["State Abbreviation"] == $state))
  | filter_period($period)
  | group_by(.Week)
  | map(collate_weeks($period))
  | .[] | "week \(.week): \(.count)"