knitr::opts_chunk$set(echo = TRUE)
rm(list = ls(all.names = TRUE))

library(readxl)
library(dplyr)
library(tidyr)
library(ggplot2)
by_county <- readxl::read_excel("data_prep.xlsx", sheet = "by_county")

# 882 rows
by_county
# create pivot table
county_pivot <- pivot_wider(by_county,
            id_cols = ndays,
            values_from = ends_with("_p"),
            values_fn = sum) %>%
  dplyr::arrange(ndays) %>%
  #dplyr::select(sort(current_vars())) %>%
  dplyr::select(sort(tidyselect::peek_vars())) %>%
  dplyr::select(ndays, everything())

# 34 rows
county_pivot
# add row_sum column
ndays_count <- county_pivot %>%
  mutate(row_sum = rowSums(select(., ends_with("p_"))))

# 34 rows
ndays_count %>%
  select(ndays, 2, last_col())
# sum of row_sum = 882
sum(ndays_count$row_sum)
[1] 882
ndays_prop <- ndays_count %>%
  apply(MARGIN = 1, function(x){x / x['row_sum']}) %>%
  t() %>%
  as.data.frame() %>%
  dplyr::mutate(ndays = ndays_count$ndays)

# 34 rows
ndays_prop
ndays_prop_long <- ndays_prop %>%
  tidyr::pivot_longer(ends_with("p_"))
ggplot(ndays_prop_long,
       aes(x = as.factor(ndays),
           y = value,
           fill = name)) +
  geom_bar(stat="identity")

ndays_count_long <- ndays_count %>%
  tidyr::pivot_longer(ends_with("p_"))
# plot county-drivers by ndays
ggplot(ndays_count_long,
       aes(x = as.factor(ndays),
           y = value,
           fill = name)) +
  geom_bar(stat="identity")

by_week <- readxl::read_excel("data_prep.xlsx", sheet = "by_week")
week_pivot <- pivot_wider(by_week,
                          id_cols = c(Census_4, Week),
                          values_from = ends_with("_p"),
                          values_fn = sum) %>%
  dplyr::arrange(Census_4, Week) %>%
  dplyr::select(sort(current_vars())) %>%
  dplyr::select(Week, Census_4, everything())

# 48 rows
week_pivot
week_count <- week_pivot %>%
  mutate(row_sum = rowSums(select(., ends_with("p_"))))

week_count %>% select(Week, Census_4, 2, last_col())
sum(week_count$row_sum)
[1] 2912
week_prop <- week_count %>%
  select(-Census_4) %>%
  apply(., MARGIN = 1, function(x){x / x['row_sum']}) %>%
  t() %>%
  as.data.frame() %>%
  dplyr::mutate(
    Census_4 = week_count$Census_4,
    Week = week_count$Week
  ) %>%
  dplyr::select(Week, Census_4, everything() )

week_prop
week_prop_long <- week_prop %>%
  tidyr::pivot_longer(ends_with("p_"))


ggplot(week_prop_long, aes(x = as.factor(Week),
                           y = value,
                           fill = name)) +
  geom_bar(stat="identity") +
  facet_wrap(~ Census_4)

week_count_long <- week_count %>%
  tidyr::pivot_longer(ends_with("p_"))

ggplot(week_count_long, aes(x = as.factor(Week),
                            y = value,
                            fill = name)) +
  geom_bar(stat="identity") +
  facet_wrap(~ Census_4)

LS0tDQp0aXRsZTogInBpdm90Ig0Kb3V0cHV0Og0KICBodG1sX25vdGVib29rOiANCiAgICB0b2M6IHllcw0KICAgIGhpZ2hsaWdodDogdGFuZ28NCiAgICB0aGVtZTogY29zbW8NCiAgaHRtbF9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICBoaWdobGlnaHQ6IHRhbmdvDQogICAgdGhlbWU6IGNvc21vDQogICAga2VlcF9tZDogeWVzDQplZGl0b3Jfb3B0aW9uczoNCiAgY2h1bmtfb3V0cHV0X3R5cGU6IGlubGluZQ0KLS0tDQoNCmBgYHtyIHNldHVwLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBjYWNoZT1UUlVFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCmBgYHtyfQ0Kcm0obGlzdCA9IGxzKGFsbC5uYW1lcyA9IFRSVUUpKQ0KDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHRpZHlyKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KYGBgDQoNCmBgYHtyfQ0KYnlfY291bnR5IDwtIHJlYWR4bDo6cmVhZF9leGNlbCgiZGF0YV9wcmVwLnhsc3giLCBzaGVldCA9ICJieV9jb3VudHkiKQ0KDQojIDg4MiByb3dzDQpieV9jb3VudHkNCmBgYA0KDQoNCmBgYHtyfQ0KIyBjcmVhdGUgcGl2b3QgdGFibGUNCmNvdW50eV9waXZvdCA8LSBwaXZvdF93aWRlcihieV9jb3VudHksDQogICAgICAgICAgICBpZF9jb2xzID0gbmRheXMsDQogICAgICAgICAgICB2YWx1ZXNfZnJvbSA9IGVuZHNfd2l0aCgiX3AiKSwNCiAgICAgICAgICAgIHZhbHVlc19mbiA9IHN1bSkgJT4lDQogIGRwbHlyOjphcnJhbmdlKG5kYXlzKSAlPiUNCiAgI2RwbHlyOjpzZWxlY3Qoc29ydChjdXJyZW50X3ZhcnMoKSkpICU+JQ0KICBkcGx5cjo6c2VsZWN0KHNvcnQodGlkeXNlbGVjdDo6cGVla192YXJzKCkpKSAlPiUNCiAgZHBseXI6OnNlbGVjdChuZGF5cywgZXZlcnl0aGluZygpKQ0KDQojIDM0IHJvd3MNCmNvdW50eV9waXZvdA0KYGBgDQoNCmBgYHtyfQ0KIyBhZGQgcm93X3N1bSBjb2x1bW4NCm5kYXlzX2NvdW50IDwtIGNvdW50eV9waXZvdCAlPiUNCiAgbXV0YXRlKHJvd19zdW0gPSByb3dTdW1zKHNlbGVjdCguLCBlbmRzX3dpdGgoInBfIikpKSkNCg0KIyAzNCByb3dzDQpuZGF5c19jb3VudCAlPiUNCiAgc2VsZWN0KG5kYXlzLCAyLCBsYXN0X2NvbCgpKQ0KYGBgDQoNCmBgYHtyfQ0KIyBzdW0gb2Ygcm93X3N1bSA9IDg4Mg0Kc3VtKG5kYXlzX2NvdW50JHJvd19zdW0pDQpgYGANCg0KYGBge3J9DQpuZGF5c19wcm9wIDwtIG5kYXlzX2NvdW50ICU+JQ0KICBhcHBseShNQVJHSU4gPSAxLCBmdW5jdGlvbih4KXt4IC8geFsncm93X3N1bSddfSkgJT4lDQogIHQoKSAlPiUNCiAgYXMuZGF0YS5mcmFtZSgpICU+JQ0KICBkcGx5cjo6bXV0YXRlKG5kYXlzID0gbmRheXNfY291bnQkbmRheXMpDQoNCiMgMzQgcm93cw0KbmRheXNfcHJvcA0KYGBgDQoNCmBgYHtyfQ0KbmRheXNfcHJvcF9sb25nIDwtIG5kYXlzX3Byb3AgJT4lDQogIHRpZHlyOjpwaXZvdF9sb25nZXIoZW5kc193aXRoKCJwXyIpKQ0KYGBgDQoNCmBgYHtyfQ0KZ2dwbG90KG5kYXlzX3Byb3BfbG9uZywNCiAgICAgICBhZXMoeCA9IGFzLmZhY3RvcihuZGF5cyksDQogICAgICAgICAgIHkgPSB2YWx1ZSwNCiAgICAgICAgICAgZmlsbCA9IG5hbWUpKSArDQogIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IikNCmBgYA0KDQpgYGB7cn0NCm5kYXlzX2NvdW50X2xvbmcgPC0gbmRheXNfY291bnQgJT4lDQogIHRpZHlyOjpwaXZvdF9sb25nZXIoZW5kc193aXRoKCJwXyIpKQ0KYGBgDQoNCmBgYHtyfQ0KIyBwbG90IGNvdW50eS1kcml2ZXJzIGJ5IG5kYXlzDQpnZ3Bsb3QobmRheXNfY291bnRfbG9uZywNCiAgICAgICBhZXMoeCA9IGFzLmZhY3RvcihuZGF5cyksDQogICAgICAgICAgIHkgPSB2YWx1ZSwNCiAgICAgICAgICAgZmlsbCA9IG5hbWUpKSArDQogIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IikNCmBgYA0KDQpgYGB7cn0NCmJ5X3dlZWsgPC0gcmVhZHhsOjpyZWFkX2V4Y2VsKCJkYXRhX3ByZXAueGxzeCIsIHNoZWV0ID0gImJ5X3dlZWsiKQ0KYGBgDQoNCmBgYHtyfQ0Kd2Vla19waXZvdCA8LSBwaXZvdF93aWRlcihieV93ZWVrLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBpZF9jb2xzID0gYyhDZW5zdXNfNCwgV2VlayksDQogICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc19mcm9tID0gZW5kc193aXRoKCJfcCIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfZm4gPSBzdW0pICU+JQ0KICBkcGx5cjo6YXJyYW5nZShDZW5zdXNfNCwgV2VlaykgJT4lDQogIGRwbHlyOjpzZWxlY3Qoc29ydChjdXJyZW50X3ZhcnMoKSkpICU+JQ0KICBkcGx5cjo6c2VsZWN0KFdlZWssIENlbnN1c180LCBldmVyeXRoaW5nKCkpDQoNCiMgNDggcm93cw0Kd2Vla19waXZvdA0KYGBgDQoNCmBgYHtyfQ0Kd2Vla19jb3VudCA8LSB3ZWVrX3Bpdm90ICU+JQ0KICBtdXRhdGUocm93X3N1bSA9IHJvd1N1bXMoc2VsZWN0KC4sIGVuZHNfd2l0aCgicF8iKSkpKQ0KDQp3ZWVrX2NvdW50ICU+JSBzZWxlY3QoV2VlaywgQ2Vuc3VzXzQsIDIsIGxhc3RfY29sKCkpDQpgYGANCg0KYGBge3J9DQpzdW0od2Vla19jb3VudCRyb3dfc3VtKQ0KYGBgDQoNCmBgYHtyfQ0Kd2Vla19wcm9wIDwtIHdlZWtfY291bnQgJT4lDQogIHNlbGVjdCgtQ2Vuc3VzXzQpICU+JQ0KICBhcHBseSguLCBNQVJHSU4gPSAxLCBmdW5jdGlvbih4KXt4IC8geFsncm93X3N1bSddfSkgJT4lDQogIHQoKSAlPiUNCiAgYXMuZGF0YS5mcmFtZSgpICU+JQ0KICBkcGx5cjo6bXV0YXRlKA0KICAgIENlbnN1c180ID0gd2Vla19jb3VudCRDZW5zdXNfNCwNCiAgICBXZWVrID0gd2Vla19jb3VudCRXZWVrDQogICkgJT4lDQogIGRwbHlyOjpzZWxlY3QoV2VlaywgQ2Vuc3VzXzQsIGV2ZXJ5dGhpbmcoKSApDQoNCndlZWtfcHJvcA0KYGBgDQoNCmBgYHtyfQ0Kd2Vla19wcm9wX2xvbmcgPC0gd2Vla19wcm9wICU+JQ0KICB0aWR5cjo6cGl2b3RfbG9uZ2VyKGVuZHNfd2l0aCgicF8iKSkNCg0KDQpnZ3Bsb3Qod2Vla19wcm9wX2xvbmcsIGFlcyh4ID0gYXMuZmFjdG9yKFdlZWspLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHZhbHVlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbCA9IG5hbWUpKSArDQogIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IikgKw0KICBmYWNldF93cmFwKH4gQ2Vuc3VzXzQpDQpgYGANCg0KYGBge3J9DQp3ZWVrX2NvdW50X2xvbmcgPC0gd2Vla19jb3VudCAlPiUNCiAgdGlkeXI6OnBpdm90X2xvbmdlcihlbmRzX3dpdGgoInBfIikpDQoNCmdncGxvdCh3ZWVrX2NvdW50X2xvbmcsIGFlcyh4ID0gYXMuZmFjdG9yKFdlZWspLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSB2YWx1ZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsID0gbmFtZSkpICsNCiAgZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiKSArDQogIGZhY2V0X3dyYXAofiBDZW5zdXNfNCkNCmBgYA==