pizzaplace |>
dplyr::group_by(type, size) |>
dplyr::summarize(
sold = dplyr::n(),
income = sum(price),
.groups = "drop_last"
) |>
dplyr::group_by(type) |>
dplyr::mutate(
f_sold = sold / sum(sold),
f_income = income / sum(income),
) |>
dplyr::arrange(type, dplyr::desc(income)) |>
gt(rowname_col = "size") |>
tab_header(
title = "Pizzas Sold in 2015",
subtitle = "Fraction of Sell Count and Revenue by Size per Type"
) |>
fmt_integer(columns = sold) |>
fmt_currency(columns = income) |>
fmt_fraction(
columns = starts_with("f_"),
accuracy = 10,
simplify = FALSE,
layout = "diagonal"
) |>
sub_missing(missing_text = "") |>
tab_spanner(
label = "Sold",
columns = contains("sold")
) |>
tab_spanner(
label = "Revenue",
columns = contains("income")
) |>
text_transform(
locations = cells_body(),
fn = function(x) {
dplyr::case_when(
x == 0 ~ "<em>nil</em>",
x != 0 ~ x
)
}
) |>
cols_label(
sold = "Amount",
income = "Amount",
f_sold = md("_f_"),
f_income = md("_f_")
) |>
cols_align(align = "center", columns = starts_with("f")) |>
tab_options(
table.width = px(400),
row_group.as_column = TRUE
)| Pizzas Sold in 2015 | |||||
| Fraction of Sell Count and Revenue by Size per Type | |||||
|
Sold
|
Revenue
|
||||
|---|---|---|---|---|---|
| Amount | f | Amount | f | ||
| chicken | L | 4,932 | 4⁄10 | $102,339.00 | 5⁄10 |
| M | 3,894 | 4⁄10 | $65,224.50 | 3⁄10 | |
| S | 2,224 | 2⁄10 | $28,356.00 | 1⁄10 | |
| classic | L | 4,057 | 3⁄10 | $74,518.50 | 3⁄10 |
| S | 6,139 | 4⁄10 | $69,870.25 | 3⁄10 | |
| M | 4,112 | 3⁄10 | $60,581.75 | 3⁄10 | |
| XL | 552 | nil | $14,076.00 | 1⁄10 | |
| XXL | 28 | nil | $1,006.60 | nil | |
| supreme | L | 4,564 | 4⁄10 | $94,258.50 | 5⁄10 |
| M | 4,046 | 3⁄10 | $66,475.00 | 3⁄10 | |
| S | 3,377 | 3⁄10 | $47,463.50 | 2⁄10 | |
| veggie | L | 5,403 | 5⁄10 | $104,202.70 | 5⁄10 |
| M | 3,583 | 3⁄10 | $57,101.00 | 3⁄10 | |
| S | 2,663 | 2⁄10 | $32,386.75 | 2⁄10 | |