4  Pratique simple de flextable

4.1 Tableau des cancers en 2021

On va travailler sur un jeu de données présenté sur le site https://data.ameli.fr/pages/data-pathologies/. Le jeu présente quelques statistiques sur le cancer en 2021.

On vous demande de construire de façon itérative un tableau présentant simplement les données tout en suivant quelques règles de formatage.

4.1.1 Importation des données

Importez les données contenues dans le fichier data/cancers-2021.parquet. Triez les selon les valeurs de la colonne effectif par ordre descendant.

Code
library(dplyr)
cancers <- arrow::read_parquet("data/cancers-2021.parquet") %>% 
  arrange(desc(effectif))
cancers

name

npop

prevalence

effectif

character

integer

numeric

numeric

Autres cancers

68,713,080

2.7

1,822,958.0

Cancer du sein de la femme

35,356,440

2.1

735,767.5

Cancer de la prostate

33,356,640

1.6

549,717.4

Cancer colorectal

68,713,080

0.5

375,173.4

Cancer du poumon

68,713,080

0.2

161,475.7

n: 5

4.1.2 Paramètres globaux

Utilisez la fonction set_flextable_defaults() et définissez :

  • “Arial” comme la police de caractères par defaut,
  • les séparateurs de milliers doivent être représentés par un blanc (” “),
  • le séparateur de décimale doit être le caractère “,”.
Code
set_flextable_defaults(
  font.family = "Arial",
  big.mark = " ",
  decimal.mark = ",",
  post_process_all = function(z) {
    autofit(z)
  }
)

Vous pouvez tester le rendu avec l’appel suivant :

Code
flextable(cancers)

name

npop

prevalence

effectif

Autres cancers

68 713 080

2,653

1 822 958,0

Cancer du sein de la femme

35 356 440

2,081

735 767,5

Cancer de la prostate

33 356 640

1,648

549 717,4

Cancer colorectal

68 713 080

0,546

375 173,4

Cancer du poumon

68 713 080

0,235

161 475,7

4.1.3 Choisir les colonnes affichées

Imprimez les colonnes c("name", "prevalence", "effectif") en utilisant l’argument col_keys de la fonction flextable.

Code
ft <- flextable(cancers, col_keys = c("name", "prevalence", "effectif"))
ft

name

prevalence

effectif

Autres cancers

2,653

1 822 958,0

Cancer du sein de la femme

2,081

735 767,5

Cancer de la prostate

1,648

549 717,4

Cancer colorectal

0,546

375 173,4

Cancer du poumon

0,235

161 475,7

4.1.4 Formatez les contenus

  • La colonne effectif doit ne comporter aucun chiffre après la virgule.
  • La colonne prevalence doit comporter deux chiffres après la virgule et doit terminer par ” %“.
Code
ft <- ft %>% 
  colformat_double(digits = 0, j = "effectif") %>% 
  colformat_double(digits = 2, j = "prevalence", suffix = " %")
ft

name

prevalence

effectif

Autres cancers

2,65 %

1 822 958

Cancer du sein de la femme

2,08 %

735 768

Cancer de la prostate

1,65 %

549 717

Cancer colorectal

0,55 %

375 173

Cancer du poumon

0,23 %

161 476

4.1.5 Gérer l’entête

  • Les colonnes prevalence et effectif doivent avoir comme label “Prévalence” et “Nombre de cas”.
  • Les noms de colonnes doivent être précédés des annotations c("Cancers", "Effectif | en France | tous âges | tous sexes | 2021").
  • Le bas du tableau doit présenter l’information suivante : “Les effectifs comptabilisent le nombre de patients pris en charge pour chacune des pathologies (ou traitements chroniques ou épisodes de soins) du groupe.”.
Code
ft <- ft %>% 
  set_header_labels(name = "", prevalence = "Prévalence", effectif = "Nombre de cas") %>% 
  add_header_lines(c("Cancers", "Effectif | en France | tous âges | tous sexes | 2021"),
                   top = TRUE) %>% 
  add_footer_lines("Les effectifs comptabilisent le nombre de patients pris en charge pour chacune des pathologies (ou traitements chroniques ou épisodes de soins) du groupe.")
ft

Cancers

Effectif | en France | tous âges | tous sexes | 2021

Prévalence

Nombre de cas

Autres cancers

2,65 %

1 822 958

Cancer du sein de la femme

2,08 %

735 768

Cancer de la prostate

1,65 %

549 717

Cancer colorectal

0,55 %

375 173

Cancer du poumon

0,23 %

161 476

Les effectifs comptabilisent le nombre de patients pris en charge pour chacune des pathologies (ou traitements chroniques ou épisodes de soins) du groupe.

4.1.6 Finaliser la mise en forme

  • Utilisez le thème theme_vanilla(),
  • la ligne du pied du tableau doit être en italique (utilisez italic()),
  • demensionnez automatiquement les largeurs de colonnes pour les ajuster au contenu avec la fonction autofit().
Code
ft <- ft %>% 
  theme_vanilla() %>% 
  italic(italic = TRUE, part = "footer") %>% 
  autofit()
ft

Cancers

Effectif | en France | tous âges | tous sexes | 2021

Prévalence

Nombre de cas

Autres cancers

2,65 %

1 822 958

Cancer du sein de la femme

2,08 %

735 768

Cancer de la prostate

1,65 %

549 717

Cancer colorectal

0,55 %

375 173

Cancer du poumon

0,23 %

161 476

Les effectifs comptabilisent le nombre de patients pris en charge pour chacune des pathologies (ou traitements chroniques ou épisodes de soins) du groupe.

4.2 Modèle probit

Réutilisez le code suivant pour obtenir le modèle à manipuler.

Code
dat <- attitude
dat$high.rating <- (dat$rating > 70)
probit.model <- glm(high.rating ~ learning + critical +
                      advance, data = dat, family = binomial(link = "probit"))
print(probit.model)
## 
## Call:  glm(formula = high.rating ~ learning + critical + advance, family = binomial(link = "probit"), 
##     data = dat)
## 
## Coefficients:
## (Intercept)     learning     critical      advance  
##  -7.4763927    0.1643745   -0.0005717   -0.0618792  
## 
## Degrees of Freedom: 29 Total (i.e. Null);  26 Residual
## Null Deviance:       38.19 
## Residual Deviance: 18.17     AIC: 26.17

4.2.1 Transformer l’object en flextable

  • Utilisez as_flextable() pour transformer probit.model en flextable.
  • Pour ne pas imprimer les étoiles de significativité, utilisez au préalable l’option options(show.signif.stars = FALSE).
  • Supprimez le pied du tableau avec la commande delete_part(part = "footer").
Code
options(show.signif.stars = FALSE)
ft <- as_flextable(probit.model) %>% 
  delete_part(part = "footer")
ft

Estimate

Standard Error

z value

Pr(>|z|)

(Intercept)

-7,476

3,570

-2,094

0,0362

learning

0,164

0,053

3,079

0,0021

critical

-0,001

0,044

-0,013

0,9896

advance

-0,062

0,042

-1,472

0,1410

  • Annoter le tableau en ajoutant au dessus des 3 premières colonnes de l’en-tête “Estimations” et des 2 dernières colonnes “Inférence”. Utilisez add_header_row() pour cela,
  • Utilisez le thème theme_vanilla(),
  • Colorez en gris les lignes où la p-value (colonne nommée p.value) est supérieure à 0.05.
Code
ft <- ft %>% 
  add_header_row(values = c("Estimations", "Inférence"), colwidths = c(3, 2), top = TRUE) %>% 
  theme_vanilla() %>% 
  color(i = ~ p.value > 0.05, color = "gray")
  
ft

Estimations

Inférence

Estimate

Standard Error

z value

Pr(>|z|)

(Intercept)

-7,476

3,570

-2,094

0,0362

learning

0,164

0,053

3,079

0,0021

critical

-0,001

0,044

-0,013

0,9896

advance

-0,062

0,042

-1,472

0,1410