library(presenter)
library(dplyr)
library(ggplot2)
library(stringr)
dplyr::rename_with
presenter::format_percent
%>%
diamonds select(-clarity) %>%
mutate(relative_price = price / max(price), .before = "x") %>%
group_by(across(where(is.ordered))) %>%
summarize(across(where(is.double), mean), .groups = "drop") %>%
format_percent(relative_price) %>%
rename_with(~str_c("category_", .), cut:color) %>%
rename_with(~str_c("property_", .), carat:table) %>%
rename_with(~str_c("dimension_", .), x:z) -> diamonds_summary
%>% head
diamonds_summary #> # A tibble: 6 × 9
#> category_cut categor…¹ prope…² prope…³ prope…⁴ relat…⁵ dimen…⁶ dimen…⁷ dimen…⁸
#> <ord> <ord> <dbl> <dbl> <dbl> <formt> <dbl> <dbl> <dbl>
#> 1 Fair D 0.920 64.0 59.0 23% 6.02 5.96 3.84
#> 2 Fair E 0.857 63.3 59.4 20% 5.91 5.86 3.72
#> 3 Fair F 0.905 63.5 59.5 20% 5.99 5.93 3.79
#> 4 Fair G 1.02 64.3 58.8 23% 6.17 6.11 3.96
#> 5 Fair H 1.22 64.6 58.7 27% 6.58 6.50 4.22
#> 6 Fair I 1.20 64.2 59.2 25% 6.56 6.49 4.19
#> # … with abbreviated variable names ¹category_color, ²property_carat,
#> # ³property_depth, ⁴property_table, ⁵relative_price, ⁶dimension_x,
#> # ⁷dimension_y, ⁸dimension_z
Header words are automatically identified by the following regular
expression: "^.*(?=(_|\\.))"
. Leaving the
header_word
argument blank produces the same result as
providing the commented out argument below. The last id column controls
merging and greyscaling. Numeric columns are given some automatic
formatting within the make_flextable
function.
%>%
diamonds_summary make_flextable(last_id_col = 2,
# header_words = c("category", "property", "dimension"),
theme = "zebra_gold")
category | property | relative_price | dimension | |||||
---|---|---|---|---|---|---|---|---|
cut | color | carat | depth | table | x | y | z | |
Fair | D | 0.92 | 64.05 | 58.97 | 23% | 6.02 | 5.96 | 3.84 |
E | 0.86 | 63.32 | 59.36 | 20% | 5.91 | 5.86 | 3.72 | |
F | 0.90 | 63.51 | 59.45 | 20% | 5.99 | 5.93 | 3.79 | |
G | 1.02 | 64.34 | 58.77 | 23% | 6.17 | 6.11 | 3.96 | |
H | 1.22 | 64.59 | 58.70 | 27% | 6.58 | 6.50 | 4.22 | |
I | 1.20 | 64.22 | 59.24 | 25% | 6.56 | 6.49 | 4.19 | |
J | 1.34 | 64.36 | 58.92 | 26% | 6.75 | 6.68 | 4.32 | |
Good | D | 0.74 | 62.37 | 58.54 | 18% | 5.62 | 5.63 | 3.50 |
E | 0.75 | 62.20 | 58.78 | 18% | 5.62 | 5.63 | 3.50 | |
F | 0.78 | 62.20 | 58.91 | 19% | 5.69 | 5.71 | 3.54 | |
G | 0.85 | 62.53 | 58.47 | 22% | 5.85 | 5.86 | 3.65 | |
H | 0.91 | 62.50 | 58.61 | 23% | 5.97 | 5.97 | 3.73 | |
I | 1.06 | 62.48 | 58.77 | 27% | 6.25 | 6.26 | 3.90 | |
J | 1.10 | 62.40 | 58.81 | 24% | 6.38 | 6.39 | 3.98 | |
Very Good | D | 0.70 | 61.75 | 58.04 | 18% | 5.50 | 5.53 | 3.41 |
E | 0.68 | 61.73 | 58.04 | 17% | 5.43 | 5.46 | 3.37 | |
F | 0.74 | 61.72 | 57.85 | 20% | 5.61 | 5.64 | 3.47 | |
G | 0.77 | 61.84 | 57.78 | 21% | 5.66 | 5.69 | 3.51 | |
H | 0.92 | 61.97 | 57.90 | 24% | 5.98 | 6.01 | 3.71 | |
I | 1.05 | 61.93 | 58.11 | 28% | 6.27 | 6.30 | 3.89 | |
J | 1.13 | 61.90 | 58.28 | 27% | 6.46 | 6.50 | 4.01 | |
Premium | D | 0.72 | 61.17 | 58.72 | 19% | 5.60 | 5.57 | 3.42 |
E | 0.72 | 61.18 | 58.78 | 19% | 5.59 | 5.56 | 3.41 | |
F | 0.83 | 61.26 | 58.68 | 23% | 5.88 | 5.84 | 3.59 | |
G | 0.84 | 61.28 | 58.70 | 24% | 5.86 | 5.83 | 3.58 | |
H | 1.02 | 61.32 | 58.79 | 28% | 6.24 | 6.23 | 3.81 | |
I | 1.14 | 61.33 | 58.77 | 32% | 6.49 | 6.45 | 3.96 | |
J | 1.29 | 61.39 | 58.87 | 33% | 6.81 | 6.77 | 4.17 | |
Ideal | D | 0.57 | 61.68 | 55.97 | 14% | 5.19 | 5.20 | 3.20 |
E | 0.58 | 61.69 | 55.97 | 14% | 5.22 | 5.23 | 3.22 | |
F | 0.66 | 61.68 | 55.92 | 18% | 5.41 | 5.42 | 3.34 | |
G | 0.70 | 61.70 | 55.90 | 20% | 5.51 | 5.52 | 3.40 | |
H | 0.80 | 61.73 | 55.97 | 21% | 5.73 | 5.74 | 3.54 | |
I | 0.91 | 61.79 | 56.02 | 24% | 5.98 | 5.99 | 3.70 | |
J | 1.06 | 61.82 | 56.01 | 26% | 6.32 | 6.33 | 3.91 |
tibble(x = letters[1:10],
y = -5:4,
z = -c(-.5, -.2, -.1, 0, .1, .2, .3, .4, .6, .9)) %>%
format_percent(z) %>%
rename_with(~str_c("sample_", .)) %>%
make_flextable()
sample | ||
---|---|---|
x | y | z |
a | -5 | 50% |
b | -4 | 20% |
c | -3 | 10% |
d | -2 | -0% |
e | -1 | -10% |
f | 0 | -20% |
g | 1 | -30% |
h | 2 | -40% |
i | 3 | -60% |
j | 4 | -90% |
tibble(x = letters[1:10],
y = -5:4,
z = -c(-.5, -.2, -.1, 0, .1, .2, .3, .4, .6, .9)) %>%
format_percent(z) %>%
make_flextable()
x | y | z |
---|---|---|
a | -5 | 50% |
b | -4 | 20% |
c | -3 | 10% |
d | -2 | -0% |
e | -1 | -10% |
f | 0 | -20% |
g | 1 | -30% |
h | 2 | -40% |
i | 3 | -60% |
j | 4 | -90% |