library(flextable)
use_df_printer()
On va utilise dans notre exemple le tableau datasets::CO2
.
CO2[-1]
Type | Treatment | conc | uptake |
factor | factor | numeric | numeric |
Quebec | nonchilled | 95 | 16.0 |
Quebec | nonchilled | 175 | 30.4 |
Quebec | nonchilled | 250 | 34.8 |
Quebec | nonchilled | 350 | 37.2 |
Quebec | nonchilled | 500 | 35.3 |
Quebec | nonchilled | 675 | 39.2 |
Quebec | nonchilled | 1,000 | 39.7 |
Quebec | nonchilled | 95 | 13.6 |
Quebec | nonchilled | 175 | 27.3 |
Quebec | nonchilled | 250 | 37.1 |
n: 84 |
Nous utiliserons cette fonction pour afficher de belles étiquettes lors de l’affichage de comptages et des pourcentages.
count_format <- function(n, percent) {
z <- character(length = length(n))
wcts <- !is.na(n)
z[wcts] <- sprintf(
"%.0f (%.01f %%)",
n[wcts], percent[wcts] * 100
)
z
}
L’objet retourné par summarizor()
est un tableau restructuré de
manière à pouvoir être utilisé comme entrée par tabulator()
.
obj <- summarizor(CO2[-1], by = "Treatment", overall_label = "Overall")
obj
variable | stat | cts | percent | data_type | value | Treatment |
character | factor | numeric | numeric | character | numeric | factor |
Type | Quebec | 21 | 0.5 | discrete | nonchilled | |
Type | Mississippi | 21 | 0.5 | discrete | nonchilled | |
Type | Missing | 0 | 0.0 | discrete | nonchilled | |
conc | Min. | continuous | 95 | nonchilled | ||
conc | Max. | continuous | 1,000 | nonchilled | ||
conc | 1st Qu. | continuous | 175 | nonchilled | ||
conc | 3rd Qu. | continuous | 675 | nonchilled | ||
conc | Median | continuous | 350 | nonchilled | ||
conc | Mean | continuous | 435 | nonchilled | ||
conc | Missing | 0 | 0.0 | continuous | nonchilled | |
n: 51 |
Créons maintenant un tableau croisé de ce résumé en appelant
tabulator()
et as_flextable()
.
Deux colonnes sont définies ici, une pour les variables numériques et
une pour les variables catégorielles qui utilise notre fonction count_format()
.
ft <- tabulator(obj,
rows = c("variable", "stat"),
columns = "Treatment",
`Est.` = as_paragraph(value),
`N` = as_paragraph(count_format(cts, percent))
) |>
as_flextable(separate_with = "variable")
ft
variable | stat | nonchilled | chilled | Overall | ||||||
Est. | N | Est. | N | Est. | N | |||||
Type | Quebec | 21 (50.0 %) | 21 (50.0 %) | 42 (50.0 %) | ||||||
Mississippi | 21 (50.0 %) | 21 (50.0 %) | 42 (50.0 %) | |||||||
Missing | 0 (0.0 %) | 0 (0.0 %) | 0 (0.0 %) | |||||||
conc | Min. | 95.0 | 95.0 | 95.0 | ||||||
1st Qu. | 175.0 | 175.0 | 175.0 | |||||||
Mean | 435.0 | 435.0 | 435.0 | |||||||
Median | 350.0 | 350.0 | 350.0 | |||||||
3rd Qu. | 675.0 | 675.0 | 675.0 | |||||||
Max. | 1,000.0 | 1,000.0 | 1,000.0 | |||||||
Missing | 0 (0.0 %) | 0 (0.0 %) | 0 (0.0 %) | |||||||
uptake | Min. | 10.6 | 7.7 | 7.7 | ||||||
1st Qu. | 26.5 | 14.5 | 17.9 | |||||||
Mean | 30.6 | 23.8 | 27.2 | |||||||
Median | 31.3 | 19.7 | 28.3 | |||||||
3rd Qu. | 38.7 | 34.9 | 37.1 | |||||||
Max. | 45.5 | 42.4 | 45.5 | |||||||
Missing | 0 (0.0 %) | 0 (0.0 %) | 0 (0.0 %) |