#check-combined-metric-file.R
#
#Check Combined Metric Files For Errors
#
#Things to confirm with the group
# - Testing_Percent_Positive is NA when denominator (Testing_Total_Encounters) is zero
# - Hospital Data is always missing for:
# - Counties for daily rows
# - The following 9 counties for summary rows:
# - Bayfield
# - Buffalo
# - Florence
# - Forest
# - Iron
# - Kewaunee
# - Marquette
# - Menominee
# - Pierce
#Setup ----
library(tidyverse)
library(ohiCovidMetrics)
library(tinytest)
load(Sys.getenv("LOADCOMBOMETRICFILE"))
isappended <- as.logical(Sys.getenv("ISAPPENDED"))
out <- out %>%
group_by(Data_Period) %>%
mutate(
nocase = max(as.Date(Date)) - as.Date(Date) == 14,
noessence = max(as.Date(Date)) - as.Date(Date) == 0 & RowType == "Daily",
) %>%
ungroup(.)
#Global Checks ----
###all periods have 1200 observation
expect_true(all(table(out$Data_Period) == 1280),
info = "All Periods have 1280 Obs.")
###all periods have 80 summary rows and 1120 daily rows
expect_true(all(table(out$Data_Period[out$RowType == "Summary"]) == 80),
info = "All periods have 80 summary rows.")
expect_true(all(table(out$Data_Period[out$RowType == "Daily"]) == 1200),
info = "All periods have 1200 daily rows.")
###all periods have 15 consecutive days
expect_true(all(out %>%
group_by(Data_Period) %>%
summarize(
ndates = n_distinct(Date),
.groups = "drop"
) %>%
pull(ndates) == 15),
info = "All periods have 15 unique dates.")
consec <- out %>%
ungroup() %>%
mutate(
Date = as.numeric(Date)
) %>%
select(Data_Period, Date) %>%
group_by(Data_Period) %>%
arrange(Data_Period, Date) %>%
distinct() %>%
mutate(
rownum = row_number(Date),
lagdiffs = Date - lag(Date),
) %>%
filter(rownum > 1)
expect_true(all(consec$lagdiffs == 1),
info = "All periods have consecutive series of dates.")
#Column Specific Checks ----
##. . Common Variables ----
###Date
expect_true(inherits(out$Date, 'Date'),
info = "Date column is 'Date' class")
expect_equal(sum(is.na(out$Date)), 0,
info = "Date column has no NA/missings")
###Region_ID
expect_true(inherits(out$Region_ID, 'character'),
info = "Region_ID column is 'character' class")
expect_equal(sum(is.na(out$Region_ID)), 0,
info = "Region_ID column has no NA/missings")
expect_equal(sort(unique(out$Region_ID)),
c("55",
"55001", "55003", "55005", "55007", "55009", "55011", "55013", "55015",
"55017", "55019", "55021", "55023", "55025", "55027", "55029", "55031",
"55033", "55035", "55037", "55039", "55041", "55043", "55045", "55047",
"55049", "55051", "55053", "55055", "55057", "55059", "55061", "55063",
"55065", "55067", "55069", "55071", "55073", "55075", "55077", "55078",
"55079", "55081", "55083", "55085", "55087", "55089", "55091", "55093",
"55095", "55097", "55099", "55101", "55103", "55105", "55107", "55109",
"55111", "55113", "55115", "55117", "55119", "55121", "55123", "55125",
"55127", "55129", "55131", "55133", "55135", "55137", "55139", "55141",
"Fox Valley Area", "North Central", "Northeast",
"Northwest", "South Central", "Southeast", "Western"),
info = "Region_ID column has only correct unique values")
###Region
expect_true(inherits(out$Region, 'character'),
info = "Region column is 'character' class")
expect_equal(sum(is.na(out$Region)), 0,
info = "Region column has no NA/missings")
expect_equal(sort(unique(out$Region)),
c("Adams", "Ashland", "Barron", "Bayfield", "Brown", "Buffalo", "Burnett", "Calumet",
"Chippewa", "Clark", "Columbia", "Crawford", "Dane", "Dodge", "Door", "Douglas",
"Dunn", "Eau Claire", "Florence", "Fond du Lac", "Forest", "Fox Valley Area", "Grant", "Green",
"Green Lake", "Iowa", "Iron", "Jackson", "Jefferson", "Juneau", "Kenosha", "Kewaunee",
"La Crosse", "Lafayette", "Langlade", "Lincoln", "Manitowoc", "Marathon", "Marinette",
"Marquette", "Menominee", "Milwaukee", "Monroe", "North Central", "Northeast", "Northwest", "Oconto",
"Oneida", "Outagamie", "Ozaukee", "Pepin", "Pierce", "Polk", "Portage", "Price",
"Racine", "Richland", "Rock", "Rusk", "Sauk", "Sawyer", "Shawano", "Sheboygan",
"South Central", "Southeast", "St. Croix", "Taylor", "Trempealeau", "Vernon", "Vilas", "Walworth",
"Washburn", "Washington", "Waukesha", "Waupaca", "Waushara", "Western", "Winnebago", "Wisconsin", "Wood"),
info = "Region column has only correct unique values")
###RowType
expect_true(inherits(out$RowType, 'character'),
info = "RowType column is 'character' class")
expect_equal(sum(is.na(out$RowType)), 0,
info = "RowType column has no NA/missings")
expect_equal(sort(unique(out$RowType)),
c("Daily", "Summary"),
info = "RowType column has only correct unique values")
###Data_Period
expect_true(inherits(out$Data_Period, 'character'),
info = "Data_Period column is 'character' class")
expect_equal(sum(is.na(out$Data_Period)), 0,
info = "Data_Period column has no NA/missings")
expect_equal(length(unique(out$Data_Period)), nrow(out)/1280,
info = "Data_Period column has the correct number of unique values")
#the regex patten below matches valid date patterns m/d/202y - m/d/2020y
expect_true(all(grepl("^([1][0-2]|[1-9])/([1-9]|[1-2][0-9]|3[0-1])/202[0-9] - ([1][0-2]|[1-9])/([1-9]|[1-2][0-9]|3[0-1])/202[0-9]$",
unique(out$Data_Period))),
info = "Data_Period values all conform to the correct pattern (m/d/202y - m/d/202y)")
##. . Confirmed Cases ----
###Conf_Case_Count
expect_true(inherits(out$Conf_Case_Count, 'numeric'),
info = "Conf_Case_Count column is 'numeric' class")
expect_equal(sum(is.na(out$Conf_Case_Count[!out$nocase])), 0,
info = "Conf_Case_Count column has no unexpected NA/missings")
###Conf_Case_Burden
expect_true(inherits(out$Conf_Case_Burden, 'numeric'),
info = "Conf_Case_Burden column is 'numeric' class")
expect_equal(sum(is.na(out$Conf_Case_Burden[out$RowType == "Summary"])), 0,
info = "Conf_Case_Burden column has no NA/missings for Summary Rows")
expect_equal(sum(!is.na(out$Conf_Case_Burden[out$RowType == "Daily"])), 0,
info = "Conf_Case_Burden column has *all* NA/missings for Daily Rows")
###Conf_Case_Trajectory
expect_true(inherits(out$Conf_Case_Trajectory, 'character'),
info = "Conf_Case_Trajectory column is 'character' class")
expect_equal(sum(is.na(out$Conf_Case_Trajectory[out$RowType == "Summary"])), 0,
info = "Conf_Case_Trajectory column has no NA/missings for Summary Rows")
expect_equal(sum(!is.na(out$Conf_Case_Trajectory[out$RowType == "Daily"])), 0,
info = "Conf_Case_Trajectory column has *all* NA/missings for Daily Rows")
###Conf_Case_Burden_Class
expect_true(inherits(out$Conf_Case_Burden_Class, 'character'),
info = "Conf_Case_Burden_Class column is 'character' class")
expect_equal(sum(is.na(out$Conf_Case_Burden_Class[out$RowType == "Summary"])), 0,
info = "Conf_Case_Burden_Class column has no NA/missings for Summary Rows")
expect_equal(sum(!is.na(out$Conf_Case_Burden_Class[out$RowType == "Daily"])), 0,
info = "Conf_Case_Burden_Class column has *all* NA/missings for Daily Rows")
expect_true(all(unique(out$Conf_Case_Burden_Class[out$RowType == "Summary"]) %in%
c("Critically high", "High", "Low", "Moderate", "Moderately high", "Very high")),
info = "Conf_Case_Burden_Class column has only correct unique values")
###Conf_Case_Trajectory_Class
expect_true(inherits(out$Conf_Case_Trajectory_Class, 'character'),
info = "Conf_Case_Trajectory_Class column is 'character' class")
expect_equal(sum(is.na(out$Conf_Case_Trajectory_Class[out$RowType == "Summary"])), 0,
info = "Conf_Case_Trajectory_Class column has no NA/missings for Summary Rows")
expect_equal(sum(!is.na(out$Conf_Case_Trajectory_Class[out$RowType == "Daily"])), 0,
info = "Conf_Case_Trajectory_Class column has *all* NA/missings for Daily Rows")
expect_true(all(unique(out$Conf_Case_Trajectory_Class[out$RowType == "Summary"]) %in%
c("Growing", "No significant change", "Shrinking")),
info = "Conf_Case_Trajectory_Class column has only correct unique values")
###Conf_Case_Composite_Class
expect_true(inherits(out$Conf_Case_Composite_Class, 'character'),
info = "Conf_Case_Composite_Class column is 'character' class")
expect_equal(sum(is.na(out$Conf_Case_Composite_Class[out$RowType == "Summary"])), 0,
info = "Conf_Case_Composite_Class column has no NA/missings for Summary Rows")
expect_equal(sum(!is.na(out$Conf_Case_Composite_Class[out$RowType == "Daily"])), 0,
info = "Conf_Case_Composite_Class column has *all* NA/missings for Daily Rows")
expect_true(all(unique(out$Conf_Case_Composite_Class[out$RowType == "Summary"]) %in%
c("Critically high", "High", "Low", "Medium", "Very high")),
info = "Conf_Case_Composite_Class column has only correct unique values")
###Conf_Case_Trajectory_P
expect_true(inherits(out$Conf_Case_Trajectory_P, 'numeric'),
info = "Conf_Case_Trajectory_P column is 'numeric' class")
expect_equal(sum(is.na(out$Conf_Case_Trajectory_P[out$RowType == "Summary"])), 0,
info = "Conf_Case_Trajectory_P column has no NA/missings for Summary Rows")
expect_equal(sum(!is.na(out$Conf_Case_Trajectory_P[out$RowType == "Daily"])), 0,
info = "Conf_Case_Trajectory_P column has *all* NA/missings for Daily Rows")
expect_true(all(dplyr::between(out$Conf_Case_Trajectory_P[out$RowType == "Summary"], left = 0.0, right = 1.0)),
info = "Conf_Case_Trajectory_P columns values are all between 0 and 1 inclusive.")
##. . Testing ----
###Testing_Positive_Encounters
expect_true(inherits(out$Testing_Positive_Encounters, 'numeric'),
info = "Testing_Positive_Encounters column is 'numeric' class")
expect_equal(sum(is.na(out$Testing_Positive_Encounters[!out$noessence])), 0,
info = "Testing_Positive_Encounters column has no unexpected NA/missings")
###Testing_Negative_Encounters
expect_true(inherits(out$Testing_Negative_Encounters, 'numeric'),
info = "Testing_Negative_Encounters column is 'numeric' class")
expect_equal(sum(is.na(out$Testing_Negative_Encounters[!out$noessence])), 0,
info = "Testing_Negative_Encounters column has no unexpected NA/missings")
###Testing_Total_Encounters
expect_true(inherits(out$Testing_Total_Encounters, 'numeric'),
info = "Testing_Total_Encounters column is 'numeric' class")
expect_equal(sum(is.na(out$Testing_Total_Encounters[!out$noessence])), 0,
info = "Testing_Total_Encounters column has no unexpected NA/missings")
###Testing_Percent_Positive
expect_true(inherits(out$Testing_Percent_Positive, 'numeric'),
info = "Testing_Percent_Positive column is 'numeric' class")
expect_equal(sum(is.na(out$Testing_Percent_Positive[out$Testing_Total_Encounters > 0 & !out$noessence])), 0,
info = "Testing_Percent_Positive column has no unexpected NA/missings")
expect_equal(sum(!is.na(out$Testing_Percent_Positive[out$Testing_Total_Encounters == 0])), 0,
info = "Testing_Percent_Positive column is always NA/missing if denominator is zero")
expect_true(all(dplyr::between(out$Testing_Percent_Positive[out$Testing_Total_Encounters > 0 & !out$noessence], left = 0.0, right = 100.0)),
info = "Testing_Percent_Positive columns values are all between 0 and 100 inclusive.")
expect_true(any(out$Testing_Percent_Positive[out$Testing_Total_Encounters > 0] > 1.0),
info = "Testing_Percent_Positive columns values are scales between 0 and 100 (not 0 and 1).")
###Testing_Composite_Class
expect_true(inherits(out$Testing_Composite_Class, 'character'),
info = "Testing_Composite_Class column is 'character' class")
expect_equal(sum(is.na(out$Testing_Composite_Class[out$RowType == "Summary"])), 0,
info = "Testing_Composite_Class column has no NA/missings for Summary Rows")
expect_equal(sum(!is.na(out$Testing_Composite_Class[out$RowType == "Daily"])), 0,
info = "Testing_Composite_Class column has *all* NA/missings for Daily Rows")
expect_true(all(unique(out$Testing_Composite_Class[out$RowType == "Summary"]) %in% c("High", "Low", "Medium")),
info = "Testing_Composite_Class column has only correct unique values")
##. . Hospital ----
non_cty <- c("Wisconsin", "Fox Valley Area", "North Central", "Northeast",
"Northwest", "South Central", "Southeast", "Western")
###Hosp_dailyCOVID_px
expect_true(inherits(out$Hosp_dailyCOVID_px, 'numeric'),
info = "Hosp_dailyCOVID_px column is 'numeric' class")
expect_equal(sum(!is.na(out$Hosp_dailyCOVID_px[out$RowType == "Summary"])), 0,
info = "Hosp_dailyCOVID_px column has only NA/missings for summary")
expect_equal(sum(is.na(out$Hosp_dailyCOVID_px[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence])), 0,
info = "Hosp_dailyCOVID_px column has no unexpected NA/missings for daily rows for state and HERC regions")
expect_equal(sum(!is.na(out$Hosp_dailyCOVID_px[out$RowType == "Daily" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_dailyCOVID_px column is always NA/missings for county daily rows")
###Hosp_dailyCOVID_ICUpx
expect_true(inherits(out$Hosp_dailyCOVID_ICUpx, 'numeric'),
info = "Hosp_dailyCOVID_ICUpx column is 'numeric' class")
expect_equal(sum(!is.na(out$Hosp_dailyCOVID_ICUpx[out$RowType == "Summary"])), 0,
info = "Hosp_dailyCOVID_ICUpx column has only NA/missings for summary")
expect_equal(sum(is.na(out$Hosp_dailyCOVID_ICUpx[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence])), 0,
info = "Hosp_dailyCOVID_ICUpx column has no unexpected NA/missings for daily rows for state and HERC regions")
expect_equal(sum(!is.na(out$Hosp_dailyCOVID_ICUpx[out$RowType == "Daily" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_dailyCOVID_ICUpx column is always NA/missings for county daily rows")
###Hosp_totalbeds
expect_true(inherits(out$Hosp_totalbeds, 'numeric'),
info = "Hosp_totalbeds column is 'numeric' class")
expect_equal(sum(!is.na(out$Hosp_totalbeds[out$RowType == "Summary"])), 0,
info = "Hosp_totalbeds column has only NA/missings for summary")
expect_equal(sum(is.na(out$Hosp_totalbeds[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence])), 0,
info = "Hosp_totalbeds column has no unexpected NA/missings for daily rows for state and HERC regions")
expect_equal(sum(!is.na(out$Hosp_totalbeds[out$RowType == "Daily" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_totalbeds column is always NA/missings for county daily rows")
###Hosp_beds_IBA
expect_true(inherits(out$Hosp_beds_IBA, 'numeric'),
info = "Hosp_beds_IBA column is 'numeric' class")
expect_equal(sum(!is.na(out$Hosp_beds_IBA[out$RowType == "Summary"])), 0,
info = "Hosp_beds_IBA column has only NA/missings for summary")
expect_equal(sum(is.na(out$Hosp_beds_IBA[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence])), 0,
info = "Hosp_beds_IBA column has no unexpected NA/missings for daily rows for state and HERC regions")
expect_equal(sum(!is.na(out$Hosp_beds_IBA[out$RowType == "Daily" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_beds_IBA column is always NA/missings for county daily rows")
###Hosp_totalICU
expect_true(inherits(out$Hosp_totalICU, 'numeric'),
info = "Hosp_totalICU column is 'numeric' class")
expect_equal(sum(!is.na(out$Hosp_totalICU[out$RowType == "Summary"])), 0,
info = "Hosp_totalICU column has only NA/missings for summary")
expect_equal(sum(is.na(out$Hosp_totalICU[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence])), 0,
info = "Hosp_totalICU column has no unexpected NA/missings for daily rows for state and HERC regions")
expect_equal(sum(!is.na(out$Hosp_totalICU[out$RowType == "Daily" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_totalICU column is always NA/missings for county daily rows")
###Hosp_ICU_IBA
expect_true(inherits(out$Hosp_ICU_IBA, 'numeric'),
info = "Hosp_ICU_IBA column is 'numeric' class")
expect_equal(sum(!is.na(out$Hosp_ICU_IBA[out$RowType == "Summary"])), 0,
info = "Hosp_ICU_IBA column has only NA/missings for summary")
expect_equal(sum(is.na(out$Hosp_ICU_IBA[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence])), 0,
info = "Hosp_ICU_IBA column has no unexpected NA/missings for daily rows for state and HERC regions")
expect_equal(sum(!is.na(out$Hosp_ICU_IBA[out$RowType == "Daily" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_ICU_IBA column is always NA/missings for county daily rows")
###Hosp_num_px_vent
expect_true(inherits(out$Hosp_num_px_vent, 'numeric'),
info = "Hosp_num_px_vent column is 'numeric' class")
expect_equal(sum(!is.na(out$Hosp_num_px_vent[out$RowType == "Summary"])), 0,
info = "Hosp_num_px_vent column has only NA/missings for summary")
expect_equal(sum(is.na(out$Hosp_num_px_vent[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence])), 0,
info = "Hosp_num_px_vent column has no unexpected NA/missings for daily rows for state and HERC regions")
expect_equal(sum(!is.na(out$Hosp_num_px_vent[out$RowType == "Daily" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_num_px_vent column is always NA/missings for county daily rows")
###Hosp_total_vents
expect_true(inherits(out$Hosp_total_vents, 'numeric'),
info = "Hosp_total_vents column is 'numeric' class")
expect_equal(sum(!is.na(out$Hosp_total_vents[out$RowType == "Summary"])), 0,
info = "Hosp_total_vents column has only NA/missings for summary")
expect_equal(sum(is.na(out$Hosp_total_vents[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence])), 0,
info = "Hosp_total_vents column has no unexpected NA/missings for daily rows for state and HERC regions")
expect_equal(sum(!is.na(out$Hosp_total_vents[out$RowType == "Daily" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_total_vents column is always NA/missings for county daily rows")
###Hosp_PrctVent_Used
expect_true(inherits(out$Hosp_PrctVent_Used, 'numeric'),
info = "Hosp_PrctVent_Used column is 'numeric' class")
expect_equal(sum(!is.na(out$Hosp_PrctVent_Used[out$RowType == "Summary"])), 0,
info = "Hosp_PrctVent_Used column has only NA/missings for summary")
expect_equal(sum(is.na(out$Hosp_PrctVent_Used[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence])), 0,
info = "Hosp_PrctVent_Used column has no unexpected NA/missings for daily rows for state and HERC regions")
expect_equal(sum(!is.na(out$Hosp_PrctVent_Used[out$RowType == "Daily" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_PrctVent_Used column is always NA/missings for county daily rows")
expect_true(all(dplyr::between(out$Hosp_PrctVent_Used[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence], left = 0.0, right = 100.0)),
info = "Hosp_PrctVent_Used columns values are all between 0 and 100 inclusive.")
expect_true(any(out$Hosp_PrctVent_Used[out$RowType == "Daily" & out$Region %in% non_cty] > 1.0),
info = "Hosp_PrctVent_Used columns values are scales between 0 and 100 (not 0 and 1).")
###Hosp_COVID_px_Trajectory
expect_true(inherits(out$Hosp_COVID_px_Trajectory, 'character') | inherits(out$Hosp_COVID_px_Trajectory, 'numeric'),
info = "Hosp_COVID_px_Trajectory column is 'character' class")
expect_equal(sum(is.na(out$Hosp_COVID_px_Trajectory[out$RowType == "Summary" & out$Region %in% non_cty])), 0,
info = "Hosp_COVID_px_Trajectory column has no NA/missings for summary rows for HERC and State")
expect_equal(sum(!is.na(out$Hosp_COVID_px_Trajectory[out$RowType == "Daily"])), 0,
info = "Hosp_COVID_px_Trajectory column has *all* NA/missings for Daily Rows")
expect_equal(sum(!is.na(out$Hosp_COVID_px_Trajectory[out$RowType == "Summary" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_COVID_px_Trajectory column is always NA/missings when expected")
###Hosp_COVID_px_Trajectory_Class
expect_true(inherits(out$Hosp_COVID_px_Trajectory_Class, 'character'),
info = "Hosp_COVID_px_Trajectory_Class column is 'character' class")
expect_equal(sum(is.na(out$Hosp_COVID_px_Trajectory_Class[out$RowType == "Summary" & out$Region %in% non_cty])), 0,
info = "Hosp_COVID_px_Trajectory_Class column has no NA/missings for summary rows for HERC and State")
expect_equal(sum(!is.na(out$Hosp_COVID_px_Trajectory_Class[out$RowType == "Daily"])), 0,
info = "Hosp_COVID_px_Trajectory_Class column has *all* NA/missings for Daily Rows")
expect_equal(sum(!is.na(out$Hosp_COVID_px_Trajectory_Class[out$RowType == "Summary" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_COVID_px_Trajectory_Class column is always NA/missings when expected")
expect_true(all(unique(out$Hosp_COVID_px_Trajectory_Class[out$RowType == "Summary" & out$Region %in% non_cty]) %in%
c("Growing", "No significant change", "Shrinking")),
info = "Hosp_COVID_px_Trajectory_Class column has only correct unique values")
###Hosp_COVID_ICUpx_Trajectory
expect_true(inherits(out$Hosp_COVID_ICUpx_Trajectory, 'character') | inherits(out$Hosp_COVID_ICUpx_Trajectory, 'numeric'),
info = "Hosp_COVID_ICUpx_Trajectory column is 'character' class")
expect_equal(sum(is.na(out$Hosp_COVID_ICUpx_Trajectory[out$RowType == "Summary" & out$Region %in% non_cty])), 0,
info = "Hosp_COVID_ICUpx_Trajectory column has no NA/missings for summary rows for HERC and State")
expect_equal(sum(!is.na(out$Hosp_COVID_ICUpx_Trajectory[out$RowType == "Daily"])), 0,
info = "Hosp_COVID_ICUpx_Trajectory column has *all* NA/missings for Daily Rows")
expect_equal(sum(!is.na(out$Hosp_COVID_ICUpx_Trajectory[out$RowType == "Summary" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_COVID_ICUpx_Trajectory column is always NA/missings when expected")
###Hosp_COVID_ICUpx_Trajectory_Class
expect_true(inherits(out$Hosp_COVID_ICUpx_Trajectory_Class, 'character'),
info = "Hosp_COVID_ICUpx_Trajectory_Class column is 'character' class")
expect_equal(sum(is.na(out$Hosp_COVID_ICUpx_Trajectory_Class[out$RowType == "Summary" & out$Region %in% non_cty])), 0,
info = "Hosp_COVID_ICUpx_Trajectory_Class column has no NA/missings for summary rows for HERC and State")
expect_equal(sum(!is.na(out$Hosp_COVID_ICUpx_Trajectory_Class[out$RowType == "Daily"])), 0,
info = "Hosp_COVID_ICUpx_Trajectory_Class column has *all* NA/missings for Daily Rows")
expect_equal(sum(!is.na(out$Hosp_COVID_ICUpx_Trajectory_Class[out$RowType == "Summary" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_COVID_ICUpx_Trajectory_Class column is always NA/missings when expected")
expect_true(all(unique(out$Hosp_COVID_px_Trajectory_Class[out$RowType == "Summary" & out$Region %in% non_cty]) %in%
c("Growing", "No significant change", "Shrinking")),
info = "Hosp_COVID_ICUpx_Trajectory_Class column has only correct unique values")
###Hosp_PrctBeds_Used
expect_true(inherits(out$Hosp_PrctBeds_Used, 'numeric'),
info = "Hosp_PrctBeds_Used column is 'numeric' class")
expect_equal(sum(!is.na(out$Hosp_PrctBeds_Used[out$RowType == "Summary"])), 0,
info = "Hosp_PrctBeds_Used column has only NA/missings for summary")
expect_equal(sum(is.na(out$Hosp_PrctBeds_Used[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence])), 0,
info = "Hosp_PrctBeds_Used column has no unexpected NA/missings for daily rows for state and HERC regions")
expect_equal(sum(!is.na(out$Hosp_PrctBeds_Used[out$RowType == "Daily" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_PrctBeds_Used column is always NA/missings for county daily rows")
expect_true(all(dplyr::between(out$Hosp_PrctBeds_Used[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence], left = 0.0, right = 100.0)),
info = "Hosp_PrctBeds_Used columns values are all between 0 and 100 inclusive.")
expect_true(any(out$Hosp_PrctBeds_Used[out$RowType == "Daily" & out$Region %in% non_cty] > 1.0),
info = "Hosp_PrctBeds_Used columns values are scales between 0 and 100 (not 0 and 1).")
###Hosp_PrctICU_Used
expect_true(inherits(out$Hosp_PrctICU_Used, 'numeric'),
info = "Hosp_PrctICU_Used column is 'numeric' class")
expect_equal(sum(!is.na(out$Hosp_PrctICU_Used[out$RowType == "Summary"])), 0,
info = "Hosp_PrctICU_Used column has only NA/missings for summary")
expect_equal(sum(is.na(out$Hosp_PrctICU_Used[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence])), 0,
info = "Hosp_PrctICU_Used column has no unexpected NA/missings for daily rows for state and HERC regions")
expect_equal(sum(!is.na(out$Hosp_PrctICU_Used[out$RowType == "Daily" & !(out$Region %in% non_cty)])), 0,
info = "Hosp_PrctICU_Used column is always NA/missings for county daily rows")
expect_true(all(dplyr::between(out$Hosp_PrctICU_Used[out$RowType == "Daily" & out$Region %in% non_cty & !out$noessence], left = 0.0, right = 100.0)),
info = "Hosp_PrctICU_Used columns values are all between 0 and 100 inclusive.")
expect_true(any(out$Hosp_PrctICU_Used[out$RowType == "Daily" & out$Region %in% non_cty] > 1.0),
info = "Hosp_PrctICU_Used columns values are scales between 0 and 100 (not 0 and 1).")
if (!isappended) {
###Hosp_Beds_moving_avg
hosp_ma <- out %>%
group_by(Data_Period, Region) %>%
mutate(
burn_obs = row_number(Date),
ma_present = if_else(RowType == "Daily" & Region %in% non_cty & burn_obs > 6 & !noessence, TRUE, FALSE)
)
expect_true(inherits(hosp_ma$Hosp_Beds_moving_avg, 'numeric'),
info = "Hosp_Beds_moving_avg column is 'numeric' class")
expect_equal(sum(is.na(hosp_ma$Hosp_Beds_moving_avg[hosp_ma$ma_present])), 0,
info = "Hosp_Beds_moving_avg column has all expected nonmissing values")
expect_equal(sum(!is.na(hosp_ma$Hosp_Beds_moving_avg[!hosp_ma$ma_present])), 0,
info = "Hosp_Beds_moving_avg column is always NA/missing when expected")
expect_true(all(dplyr::between(hosp_ma$Hosp_Beds_moving_avg[hosp_ma$ma_present], left = 0.0, right = 100.0)),
info = "Hosp_Beds_moving_avg columns values are all between 0 and 100 inclusive.")
expect_true(any(hosp_ma$Hosp_Beds_moving_avg[hosp_ma$ma_present] > 1.0),
info = "Hosp_Beds_moving_avg columns values are scales between 0 and 100 (not 0 and 1).")
###Hosp_ICU_moving_avg
expect_true(inherits(hosp_ma$Hosp_ICU_moving_avg, 'numeric'),
info = "Hosp_ICU_moving_avg column is 'numeric' class")
expect_equal(sum(is.na(hosp_ma$Hosp_ICU_moving_avg[hosp_ma$ma_present])), 0,
info = "Hosp_ICU_moving_avg column has all expected nonmissing values")
expect_equal(sum(!is.na(hosp_ma$Hosp_ICU_moving_avg[!hosp_ma$ma_present])), 0,
info = "Hosp_ICU_moving_avg column is always NA/missing when expected")
expect_true(all(dplyr::between(hosp_ma$Hosp_ICU_moving_avg[hosp_ma$ma_present], left = 0.0, right = 100.0)),
info = "Hosp_ICU_moving_avg columns values are all between 0 and 100 inclusive.")
expect_true(any(hosp_ma$Hosp_ICU_moving_avg[hosp_ma$ma_present] > 1.0),
info = "Hosp_ICU_moving_avg columns values are scales between 0 and 100 (not 0 and 1).")
###Hosp_Vent_moving_avg
expect_true(inherits(hosp_ma$Hosp_Vent_moving_avg, 'numeric'),
info = "Hosp_Vent_moving_avg column is 'numeric' class")
expect_equal(sum(is.na(hosp_ma$Hosp_Vent_moving_avg[hosp_ma$ma_present])), 0,
info = "Hosp_Vent_moving_avg column has all expected nonmissing values")
expect_equal(sum(!is.na(hosp_ma$Hosp_Vent_moving_avg[!hosp_ma$ma_present])), 0,
info = "Hosp_Vent_moving_avg column is always NA/missing when expected")
expect_true(all(dplyr::between(hosp_ma$Hosp_Vent_moving_avg[hosp_ma$ma_present], left = 0.0, right = 100.0)),
info = "Hosp_Vent_moving_avg columns values are all between 0 and 100 inclusive.")
expect_true(any(hosp_ma$Hosp_Vent_moving_avg[hosp_ma$ma_present] > 1.0),
info = "Hosp_Vent_moving_avg columns values are scales between 0 and 100 (not 0 and 1).")
}
##. . CLI ----
###CLI_Count
expect_true(inherits(out$CLI_Count, 'numeric'),
info = "CLI_Count column is 'numeric' class")
expect_equal(sum(is.na(out$CLI_Count[!out$noessence])), 0,
info = "CLI_Count column has no unexpected NA/missings")
###CLI_Burden
expect_true(inherits(out$CLI_Burden, 'numeric'),
info = "CLI_Burden column is 'numeric' class")
expect_equal(sum(is.na(out$CLI_Burden[out$RowType == "Summary"])), 0,
info = "CLI_Burden column has no NA/missings for Summary Rows")
expect_equal(sum(!is.na(out$CLI_Burden[out$RowType == "Daily"])), 0,
info = "CLI_Burden column has *all* NA/missings for Daily Rows")
###CLI_Trajectory
expect_true(inherits(out$CLI_Trajectory, 'character'),
info = "CLI_Trajectory column is 'character' class")
expect_equal(sum(is.na(out$CLI_Trajectory[out$RowType == "Summary"])), 0,
info = "CLI_Trajectory column has no NA/missings for Summary Rows")
expect_equal(sum(!is.na(out$CLI_Trajectory[out$RowType == "Daily"])), 0,
info = "CLI_Trajectory column has *all* NA/missings for Daily Rows")
###CLI_Burden_Class
expect_true(inherits(out$CLI_Burden_Class, 'character'),
info = "CLI_Burden_Class column is 'character' class")
expect_equal(sum(is.na(out$CLI_Burden_Class[out$RowType == "Summary"])), 0,
info = "CLI_Burden_Class column has no NA/missings for Summary Rows")
expect_equal(sum(!is.na(out$CLI_Burden_Class[out$RowType == "Daily"])), 0,
info = "CLI_Burden_Class column has *all* NA/missings for Daily Rows")
expect_true(all(unique(out$CLI_Burden_Class[out$RowType == "Summary"]) %in%
c("Critically high", "High", "Low", "Moderate", "Moderately high", "Very high")),
info = "CLI_Burden_Class column has only correct unique values")
###CLI_Trajectory_Class
expect_true(inherits(out$CLI_Trajectory_Class, 'character'),
info = "CLI_Trajectory_Class column is 'character' class")
expect_equal(sum(is.na(out$CLI_Trajectory_Class[out$RowType == "Summary"])), 0,
info = "CLI_Trajectory_Class column has no NA/missings for Summary Rows")
expect_equal(sum(!is.na(out$CLI_Trajectory_Class[out$RowType == "Daily"])), 0,
info = "CLI_Trajectory_Class column has *all* NA/missings for Daily Rows")
expect_true(all(unique(out$CLI_Trajectory_Class[out$RowType == "Summary"]) %in%
c("Growing", "No significant change", "Shrinking")),
info = "CLI_Trajectory_Class column has only correct unique values")
###CLI_Composite_Class
expect_true(inherits(out$CLI_Composite_Class, 'character'),
info = "CLI_Composite_Class column is 'character' class")
expect_equal(sum(is.na(out$CLI_Composite_Class[out$RowType == "Summary"])), 0,
info = "CLI_Composite_Class column has no NA/missings for Summary Rows")
expect_equal(sum(!is.na(out$CLI_Composite_Class[out$RowType == "Daily"])), 0,
info = "CLI_Composite_Class column has *all* NA/missings for Daily Rows")
expect_true(all(unique(out$CLI_Composite_Class[out$RowType == "Summary"]) %in% c("Critically high", "High", "Low", "Medium", "Very high")),
info = "CLI_Composite_Class column has only correct unique values")
###CLI_Trajectory_P
expect_true(inherits(out$CLI_Trajectory_P, 'numeric'),
info = "CLI_Trajectory_P column is 'numeric' class")
expect_equal(sum(is.na(out$CLI_Trajectory_P[out$RowType == "Summary"])), 0,
info = "CLI_Trajectory_P column has no NA/missings for Summary Rows")
expect_equal(sum(!is.na(out$CLI_Trajectory_P[out$RowType == "Daily"])), 0,
info = "CLI_Trajectory_P column has *all* NA/missings for Daily Rows")
expect_true(all(dplyr::between(out$CLI_Trajectory_P[out$RowType == "Summary"], left = 0.0, right = 1.0)),
info = "CLI_Trajectory_P columns values are all between 0 and 1 inclusive.")
##. . ILI ----
###ED_Total_Visits
expect_true(inherits(out$ED_Total_Visits, 'numeric'),
info = "ED_Total_Visits column is 'numeric' class")
expect_equal(sum(is.na(out$ED_Total_Visits[out$RowType == "Daily" & !out$noessence])), 0,
info = "ED_Total_Visits column has no unexpected NA/missings for Daily rows")
expect_equal(sum(!is.na(out$ED_Total_Visits[out$RowType == "Summary"])), 0,
info = "ED_Total_Visits column has ONLY NA/missings for Summary rows")
###ED_ILI_Visits
expect_true(inherits(out$ED_ILI_Visits, 'numeric'),
info = "ED_ILI_Visits column is 'numeric' class")
expect_equal(sum(is.na(out$ED_ILI_Visits[out$RowType == "Daily" & !out$noessence])), 0,
info = "ED_ILI_Visits column has no unexpected NA/missings for Daily rows")
expect_equal(sum(!is.na(out$ED_ILI_Visits[out$RowType == "Summary"])), 0,
info = "ED_ILI_Visits column has ONLY NA/missings for Summary rows")
###ILI_Percent
expect_true(inherits(out$ILI_Percent, 'numeric'),
info = "ILI_Percent column is 'numeric' class")
expect_equal(sum(is.na(out$ILI_Percent[out$RowType == "Daily" & !out$noessence])), 0,
info = "ILI_Percent column has no unexpected NA/missings for Daily rows")
expect_equal(sum(!is.na(out$ILI_Percent[out$RowType == "Summary"])), 0,
info = "ILI_Percent column has ONLY NA/missings for Summary rows")
expect_true(all(dplyr::between(out$ILI_Percent[out$RowType == "Daily" & !out$noessence], left = 0.0, right = 100.0)),
info = "ILI_Percent columns values are all between 0 and 100 inclusive.")
expect_true(any(out$ILI_Percent[out$RowType == "Daily"] > 1.0),
info = "ILI_Percent columns values are scales between 0 and 100 (not 0 and 1).")
###ILI_Baseline
expect_true(inherits(out$ILI_Baseline, 'numeric'),
info = "ILI_Baseline column is 'numeric' class")
expect_equal(sum(is.na(out$ILI_Baseline[out$RowType == "Daily" & out$Region != "Florence" & !out$noessence])), 0,
info = "ILI_Baseline column has no unexpected NA/missings for Daily rows outside of Florence County")
expect_equal(sum(!is.na(out$ILI_Baseline[out$RowType == "Summary" | out$Region == "Florence"])), 0,
info = "ILI_Baseline column has ONLY NA/missings for Summary rows and Florence County")
expect_true(all(dplyr::between(out$ILI_Baseline[out$RowType == "Daily" & out$Region != "Florence" & !out$noessence], left = 0.0, right = 100.0)),
info = "ILI_Baseline columns values are all between 0 and 100 inclusive.")
expect_true(any(out$ILI_Baseline[out$RowType == "Daily" & out$Region != "Florence"] > 1.0),
info = "ILI_Baseline columns values are scales between 0 and 100 (not 0 and 1).")
###ILI_Threshold
expect_true(inherits(out$ILI_Threshold, 'numeric'),
info = "ILI_Threshold column is 'numeric' class")
expect_equal(sum(is.na(out$ILI_Threshold[out$RowType == "Daily" & out$Region != "Florence" & !out$noessence])), 0,
info = "ILI_Threshold column has no unexpected NA/missings for Daily rows outside of Florence County")
expect_equal(sum(!is.na(out$ILI_Threshold[out$RowType == "Summary" | out$Region == "Florence"])), 0,
info = "ILI_Threshold column has ONLY NA/missings for Summary rows and Florence County")
expect_true(all(dplyr::between(out$ILI_Threshold[out$RowType == "Daily" & out$Region != "Florence" & !out$noessence], left = 0.0, right = 100.0)),
info = "ILI_Threshold columns values are all between 0 and 100 inclusive.")
expect_true(any(out$ILI_Threshold[out$RowType == "Daily" & out$Region != "Florence"] > 1.0),
info = "ILI_Threshold columns values are scales between 0 and 100 (not 0 and 1).")
if (!isappended) {
###ILI_Moving_Avg
ili_ma <- out %>%
group_by(Data_Period, Region) %>%
mutate(
burn_obs = row_number(Date),
ma_present = if_else(RowType == "Daily" & burn_obs > 2 & !noessence, TRUE, FALSE)
)
expect_true(inherits(ili_ma$ILI_Moving_Avg, 'numeric'),
info = "ILI_Moving_Avg column is 'numeric' class")
expect_equal(sum(is.na(ili_ma$ILI_Moving_Avg[ili_ma$ma_present])), 0,
info = "ILI_Moving_Avg column has no NA/missings for Daily rows that are first 2 dates of period per geo-unit")
expect_equal(sum(!is.na(ili_ma$ILI_Moving_Avg[!ili_ma$ma_present])), 0,
info = "ILI_Moving_Avg column has ONLY NA/missings for Summary rows and first 2 dates of period per geo-unit")
expect_true(all(dplyr::between(ili_ma$ILI_Moving_Avg[ili_ma$ma_present], left = 0.0, right = 100.0)),
info = "ILI_Moving_Avg columns values are all between 0 and 100 inclusive.")
expect_true(any(ili_ma$ILI_Moving_Avg[ili_ma$ma_present] > 1.0),
info = "ILI_Moving_Avg columns values are scaled between 0 and 100 (not 0 and 1).")
###ILI_Status
expect_true(inherits(ili_ma$ILI_Status, 'character'),
info = "ILI_Status column is 'character' class")
expect_equal(sum(is.na(ili_ma$ILI_Status[ili_ma$ma_present & ili_ma$Region != "Florence"])), 0,
info = "ILI_Status column has no NA/missings for Daily rows outside of Florence County and first 2 dates of period per geo-unit")
expect_equal(sum(!is.na(ili_ma$ILI_Status[ili_ma$RowType == "Summary" | ili_ma$Region == "Florence" | ili_ma$burn_obs <= 2])), 0,
info = "ILI_Status column has ONLY NA/missings for Summary rows and Florence County and first 2 dates of period per geo-unit")
expect_true(all(unique(ili_ma$ILI_Status[ili_ma$ma_present & ili_ma$Region != "Florence"]) %in%
c("Elevated", "Low", "Moderate")),
info = "ILI_Status column has only correct unique values")
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.