# ces paquets seront nécessaires pour la suite
library(readr) # lecture des données
library(dplyr) # manipulation des données
# et d'autres au fur et à mesure...
Exercices Quarto
Exercices de la formation R perfectionnement, module Quarto, des formations à R dispensées au MASA.
Pour bénéficier de la version la plus récente de Quarto, vous pouvez travailler –pour cette formation– sur la version de pré-production de CERISE.
1 Découvrir l’interface
Fichier
>Nouveau projet
>Nouveau répertoire
>Projet Quarto
>- choisir un répertoire, par exemple : formation dans ~
- moteur knitr
ou, dans un projet existant :
Fichier
>Nouveau fichier
>R Quarto document
Basculer successivement sur l’éditeur texte brut / WYSIWYM1
Tricoter le document
2 Produire un document simple
2.1 Formater du texte
- Nouveau document Quarto
- Insérer du texte
- Insérer des titres de différent niveau
- Passer en gras, italique
- Insérer une image
- Faire une liste
Tricoter le document.
3 Code
3.1 Présentation des données
Utilisation d’un extrait randomisé du RA 2020. Ouvrir le fichier dans donnees/ra_2020.rds.
Code
<- read_rds("donnees/ra_2020.rds") ra
Rows: 1,000
Columns: 11
$ siege_code_com <chr> "97128", "37178", "89436", "89143", "97103", "84087", "…
$ siege_lib_com <chr> "LESCURE D ALBIGEOIS", "MARCOLES", "VALREAS", "RIOTORD"…
$ siege_dep <chr> "51", "57", "11", "95", "34", "37", "971", "22", "16", …
$ siege_lib_dep <chr> "VENDEE", "PAS DE CALAIS", "PYRENEES ATLANTIQUES", "PYR…
$ siege_reg <chr> "52", "76", "53", "53", "32", "53", "44", "75", "03", "…
$ siege_lib_reg <chr> "BOURGOGNE FRANCHE COMTE", "OCCITANIE", "NOUVELLE AQUIT…
$ geo_lct <chr> "FR_CRS3035RES1000mN2888000E3883000", "FR_CRS3035RES100…
$ pbstot_coef17 <dbl> 2359.20, 3857.20, 478411.23, 15800.00, 213106.09, 14000…
$ otefda_coef17 <chr> "4600", "4600", "6184", "6184", "1516", "2829", "3500",…
$ sau_tot <dbl> 108.99, 220.06, 0.00, 131.35, 275.92, 73.96, 94.03, 2.3…
$ ugbag_tot <dbl> 0.00, 0.00, 167.28, 0.00, 0.00, 8.00, 40.62, 273.17, 3.…
3.2 Utiliser les résultats de calculs
- Insérer un code R chargeant les paquets nécessaires, ouvrant les données du RA et calculant la SAU totale
- Exécuter (sortie dans la console)
- Tricoter (aperçu HTML)
Code
|>
ra summarise(sau_tot_ha = sum(sau_tot, na.rm = TRUE))
# A tibble: 1 × 1
sau_tot_ha
<dbl>
1 64986.
- Reprendre le code précédent, sauver le résultat dans une variable.
- Afficher le résultat au sein d’une phrase
Code
<- ra |>
sau_tot_ha summarise(sau_tot_ha = sum(sau_tot, na.rm = TRUE)) |>
pull(1)
La SAU totale vaut 6.498577^{4} ha.
- Formater le résultat (arrondi, séparateur décimal, séparateur de milliers)
La SAU totale vaut 64 985,8 ha.
- Utiliser des
options()
ou desknitr::knit_hooks()
pour ne pas formater chaque sortie
Code
options(OutDec = ",",
digits = 1,
scipen = 1e3)
# ou par exemple
::knit_hooks$set(inline = function(x) {
knitrif (!is.numeric(x)) {
xelse {
} prettyNum(x, big.mark = " ")
} })
La SAU totale vaut 64 986 ha.
3.3 Déboguer
- Exécuter chunk par chunk
- Utiliser “Exécuter tous les chunks au-dessus”.
4 Afficher des tableaux
Afficher les premières lignes du data.frame ra
.
4.1 Tibble brut
Code
ra
# A tibble: 1.000 × 11
siege_code_com siege_lib_com siege_dep siege_lib_dep siege_reg siege_lib_reg
<chr> <chr> <chr> <chr> <chr> <chr>
1 97128 LESCURE D ALB… 51 VENDEE 52 BOURGOGNE FR…
2 37178 MARCOLES 57 PAS DE CALAIS 76 OCCITANIE
3 89436 VALREAS 11 PYRENEES ATL… 53 NOUVELLE AQU…
4 89143 RIOTORD 95 PYRENEES ATL… 53 OCCITANIE
5 97103 CAUMONT 34 HAUTE CORSE 32 AUVERGNE RHO…
6 84087 AZY LE VIF 37 HAUTE SAVOIE 53 NOUVELLE AQU…
7 40317 SOINGS EN SOL… 971 VIENNE 44 NORMANDIE
8 12120 BONNAT 22 AVEYRON 75 AUVERGNE RHO…
9 33389 MONTASTRUC LA… 16 CALVADOS 03 NOUVELLE AQU…
10 28111 OYRE 87 MAINE ET LOI… 76 BOURGOGNE FR…
# ℹ 990 more rows
# ℹ 5 more variables: geo_lct <chr>, pbstot_coef17 <dbl>, otefda_coef17 <chr>,
# sau_tot <dbl>, ugbag_tot <dbl>
4.2 HTML mis en forme
Afficher les premières lignes du data.frame ra
avec une mise en forme plus élaborée, avec {gt} ou knitr::kable()
.
Code
library(gt) # tableaux
|>
ra slice_head(n = 5) |>
gt()
siege_code_com | siege_lib_com | siege_dep | siege_lib_dep | siege_reg | siege_lib_reg | geo_lct | pbstot_coef17 | otefda_coef17 | sau_tot | ugbag_tot |
---|---|---|---|---|---|---|---|---|---|---|
97128 | LESCURE D ALBIGEOIS | 51 | VENDEE | 52 | BOURGOGNE FRANCHE COMTE | FR_CRS3035RES1000mN2888000E3883000 | 2359 | 4600 | 109 | 0 |
37178 | MARCOLES | 57 | PAS DE CALAIS | 76 | OCCITANIE | FR_CRS3035RES1000mN2316000E3389000 | 3857 | 4600 | 220 | 0 |
89436 | VALREAS | 11 | PYRENEES ATLANTIQUES | 53 | NOUVELLE AQUITAINE | FR_CRS3035RES1000mN2316000E3562000 | 478411 | 6184 | 0 | 167 |
89143 | RIOTORD | 95 | PYRENEES ATLANTIQUES | 53 | OCCITANIE | FR_CRS3035RES1000mN2372000E4045000 | 15800 | 6184 | 131 | 0 |
97103 | CAUMONT | 34 | HAUTE CORSE | 32 | AUVERGNE RHONE ALPES | FR_CRS3035RES1000mN2540000E3823000 | 213106 | 1516 | 276 | 0 |
Code
library(knitr) # moteur de transfo markdown
|>
ra slice_head(n = 5) |>
kable()
siege_code_com | siege_lib_com | siege_dep | siege_lib_dep | siege_reg | siege_lib_reg | geo_lct | pbstot_coef17 | otefda_coef17 | sau_tot | ugbag_tot |
---|---|---|---|---|---|---|---|---|---|---|
97128 | LESCURE D ALBIGEOIS | 51 | VENDEE | 52 | BOURGOGNE FRANCHE COMTE | FR_CRS3035RES1000mN2888000E3883000 | 2359 | 4600 | 109 | 0 |
37178 | MARCOLES | 57 | PAS DE CALAIS | 76 | OCCITANIE | FR_CRS3035RES1000mN2316000E3389000 | 3857 | 4600 | 220 | 0 |
89436 | VALREAS | 11 | PYRENEES ATLANTIQUES | 53 | NOUVELLE AQUITAINE | FR_CRS3035RES1000mN2316000E3562000 | 478411 | 6184 | 0 | 167 |
89143 | RIOTORD | 95 | PYRENEES ATLANTIQUES | 53 | OCCITANIE | FR_CRS3035RES1000mN2372000E4045000 | 15800 | 6184 | 131 | 0 |
97103 | CAUMONT | 34 | HAUTE CORSE | 32 | AUVERGNE RHONE ALPES | FR_CRS3035RES1000mN2540000E3823000 | 213106 | 1516 | 276 | 0 |
4.2.1 Interactif
Afficher les 100 premières ligne de ra
dans un tableau interactif Javascript avec datatable (package {DT}).
Code
library(DT) # tableaux interactifs
|>
ra slice_head(n = 100) |>
datatable(
options = list(
language = list(
url = "https://cdn.datatables.net/plug-ins/1.10.11/i18n/French.json")))
5 Graphiques
- Ajouter un graphique dans le document Quarto. Ex. : Top 10 des SAU départementales à partir de
ra
. - Préciser un titre de figure
Code
library(ggplot2) # graphiques
library(forcats) # facteurs
<- ra |>
graph_sau summarise(.by = c(siege_lib_dep),
sau_dep_ha = sum(sau_tot, na.rm = TRUE),
n = paste(n(), "exploit.")) |>
slice_max(sau_dep_ha, n = 10) |>
mutate(siege_lib_dep = fct_reorder(siege_lib_dep, sau_dep_ha)) |>
ggplot(aes(siege_lib_dep,
sau_dep_ha,text = n)) +
geom_col() +
coord_flip() +
labs(title = "10 plus grandes SAU",
x = "dép.",
y = "surface (ha)")
graph_sau
Ajouter une phrase dans votre texte indiquant que la figure 1 montre des résultats intéressants (insertion d’un renvoi).
5.1 Interactivité
- Activer l’interactivité sur un graphique avec {ggiraph}
Code
library(plotly) # graphiques interactifs
|>
graph_sau ggplotly(tooltip = "n")
5.2 Disposition
Il est possible de choisir l’emprise et l’emplacement des graphiques (disponible aussi pour d’autres éléments).
- Placer un graphique en marge avec l’option
column:
.
Code
<- ra |>
densite_sau ggplot() +
geom_density(aes(sau_tot), fill = "darkslategray3")
densite_sau
Par exemple : densité ou histogramme de la sau_tot
.
- Disposer deux graphiques côte à côte avec l’option
layout-ncol:
.
Il est possible d’ajouter des sous-légendes pour chaque graphique doc
Code
densite_sau graph_sau
6 Cartes
Ouvrir la couche region
du fichier ~/CERISE/03-Espace-de-Diffusion/000_Referentiels/0040_Geo/IGN/adminexpress/adminexpress_cog_simpl_000_2024.gpkg et l’afficher avec {leaflet}.
Code
library(sf) # SIG
library(leaflet) # cartographie dynamique
"~/CERISE/03-Espace-de-Diffusion/000_Referentiels/0040_Geo/IGN/adminexpress/adminexpress_cog_simpl_000_2024.gpkg" |>
read_sf(layer = "region") |>
leaflet() |>
addTiles() |>
addPolygons()
7 HTML avec éléments interactifs
// TODO
8 PDF
Sur CERISE en pré-prod uniquement (ou en prod fin février)
- (Partir d’un nouveau document ou enlever les éléments interactifs {DT} ou {leaflet})
- Changer le format dans l’en-tête (
typst
oupdf
) - Tricoter
9 Tableau de bord
// TODO
10 Rapports paramétrés
- Faire un rapport régional donnant le nom de la région, la SAU, les UGB totaux.
- Générer le rapport pour toutes les régions
Méta
Ce document est produit par :
C:/Users/michael.delorme/Documents/formations/formation_quarto/exercices/exercices_quarto.qmd
Dépôt Git
Ce projet est versionné dans :
https://github.com/SSM-Agriculture/Formation-R-perf-03-quarto
Notes de bas de page
What You See Is What You Mean↩︎