Overall Domain Results
reactable(
overall_domain,
defaultSorted = "DomainNbr",
striped = TRUE,
bordered = TRUE,
highlight = TRUE,
columns = list(
DomainNbr = colDef(name = "#", width = 60),
DomainLabel = colDef(name = "ICP Domain", minWidth = 260),
mean = colDef(
name = "Average score",
format = colFormat(digits = 2)
),
sd = colDef(
name = "SD",
format = colFormat(digits = 2)
),
pct_good_or_better = colDef(
name = "% Good or better (5–7)",
format = colFormat(percent = TRUE, digits = 0)
)
)
)
Agency-level results (domain means by agency)
reactable(
agency_domain,
searchable = TRUE,
filterable = TRUE,
striped = TRUE,
bordered = TRUE,
highlight = TRUE,
defaultPageSize = 15,
columns = list(
Agency = colDef(minWidth = 180),
DomainNbr = colDef(name = "#", width = 60),
DomainLabel = colDef(name = "ICP Domain", minWidth = 260),
mean = colDef(name = "Avg", format = colFormat(digits = 2)),
pct_good_or_better = colDef(
name = "% Good (5–7)",
format = colFormat(percent = TRUE, digits = 0)
)
)
)
Site/Class-level results (nested by agency → site)
reactable(
agency_nested,
searchable = TRUE,
filterable = TRUE,
striped = TRUE,
bordered = TRUE,
highlight = TRUE,
defaultPageSize = 10,
columns = list(
Agency = colDef(minWidth = 180),
Site_Class_Name = colDef(name = "Site / Class", minWidth = 220),
details = colDef(show = FALSE)
),
details = function(index) {
row <- agency_nested[index, , drop = FALSE]
detail_tbl <- row$details[[1]] %>%
mutate(mean = round(mean, 2))
div(
style = "padding: 12px 4px 4px 4px;",
tags$b("Domain detail"),
reactable(
detail_tbl,
compact = TRUE,
striped = TRUE,
bordered = TRUE,
columns = list(
DomainNbr = colDef(name = "#", width = 60),
DomainLabel = colDef(name = "ICP Domain", minWidth = 280),
n_scored = colDef(name = "N", width = 70),
mean = colDef(name = "Avg", format = colFormat(digits = 2))
)
)
)
}
)
Score Distribution View
dist_domain <- icp_long %>%
filter(!is.na(Score)) %>% # drop missing scores
mutate(
ScoreLabel = factor(
ScoreLabel,
levels = c(
"Needs support (1–2.99)",
"Emerging (3–4.99)",
"Good or better (5–7)"
)
)
) %>%
count(DomainNbr, DomainLabel, ScoreLabel) %>%
group_by(DomainNbr, DomainLabel) %>%
mutate(
pct = n / sum(n)
) %>%
ungroup() %>%
arrange(DomainNbr, ScoreLabel)
reactable(
dist_domain,
striped = TRUE,
bordered = TRUE,
highlight = TRUE,
defaultPageSize = 10,
columns = list(
DomainNbr = colDef(name = "#", width = 60),
DomainLabel = colDef(name = "ICP Domain", minWidth = 300),
ScoreLabel = colDef(name = "Category", minWidth = 200),
n = colDef(name = "Count", width = 90),
pct = colDef(
name = "Percent",
format = colFormat(percent = TRUE, digits = 0),
width = 110
)
)
)