Skip to content

Instantly share code, notes, and snippets.

@SmartFinn
Created November 7, 2020 09:55
Show Gist options
  • Save SmartFinn/b6cf4fa89765c4785d2953295c2c2d87 to your computer and use it in GitHub Desktop.
Save SmartFinn/b6cf4fa89765c4785d2953295c2c2d87 to your computer and use it in GitHub Desktop.

Revisions

  1. SmartFinn created this gist Nov 7, 2020.
    47 changes: 47 additions & 0 deletions group_by_age.awk
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,47 @@
    #!/usr/bin/awk -f
    # Copyright (c) 2020 Sergei Eremenko (https://github.com/SmartFinn)
    #
    # Permission to use, copy, modify, and/or distribute this software for any
    # purpose with or without fee is hereby granted.
    #
    # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
    # REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
    # AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
    # INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
    # LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
    # OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
    # PERFORMANCE OF THIS SOFTWARE.
    #
    # Usage:
    # wget -qO- 'https://raw.githubusercontent.com/VasiaPiven/covid19_ua/master/covid19_by_area_type_hosp_dynamics.csv' | awk -f group_by_age.awk


    BEGIN {
    FS = ","
    ROWS = "Уточнюється,0-9,10-19,20-29,30-39,40-49,50-59,60-69,70-79,80-89"
    }

    # skip header
    FNR > 1 {
    gsub(/"/,X,$0)
    DEATHS[$5]+=$(NF-1)
    CONFIRMED[$5]+=$(NF-3)
    RECOVERED[$5]+=$(NF)

    TOTAL_DEATHS+=$(NF-1)
    TOTAL_CONFIRMED+=$(NF-3)
    TOTAL_RECOVERED+=$(NF)
    }

    END {
    printf "%12s %12s %12s %12s %12s %12s\n", "AGE", "CONFIRMED", "DEATHS", "RECOVERED", "D.RATE", "R.RATE"

    rows_num = split(ROWS, row, ",")

    for (i=1; i<=rows_num; i++) {
    #printf "%12s %12s %12s %12s\n", row[i], CONFIRMED[row[i]], DEATHS[row[i]], RECOVERED[row[i]]
    printf "%12s %12s %12s %12s %12.1f%% %12.1f%%\n", row[i], CONFIRMED[row[i]], DEATHS[row[i]], RECOVERED[row[i]], (DEATHS[row[i]] / CONFIRMED[row[i]] * 100), (RECOVERED[row[i]] / CONFIRMED[row[i]] * 100)
    }

    printf "%12s %12s %12s %12s %12.1f%% %12.1f%%\n", "TOTAL", TOTAL_CONFIRMED, TOTAL_DEATHS, TOTAL_RECOVERED, (TOTAL_DEATHS / TOTAL_CONFIRMED * 100), (TOTAL_RECOVERED / TOTAL_CONFIRMED * 100)
    }