library(didoscalim)
#> ✖ Environnement DiDo actif : DEVLe CSV augmenté
DiDo utilise un csv augmenté avec 4 lignes d’entêtes :
- une description des variables
 - le type de la variable
 - l’unité de la variable
 - le nom de la variable
 
"Commune";"Nombre de logements neufs"
"cog_commune_2020";"entier"
"n/a";"s/u"
"COMMUNE";"LOGEMENTS_NEUFS"
Le site de documentation de l’API propose une documentation plus complète sur le csv augmenté ainsi que sur la liste des types.
Générer un CSV augmenté.
didoscalim propose une fonction pour vous aider.
La génération se passe en trois étapes :
- le chargement du fichier d’origine :
dido_read_delim() - l’ajout des lignes d’entêtes spécifiques :
dido_csv() - l’écriture du fichier au bon format :
dido_write_csv() 
le chargement du fichier d’origine
Le fichier d’origine doit être au format CSV classique, ie, la première ligne du fichier contient le nom des variables. Vous pouvez télécharger le fichier exemple utilisé.
En premier lieu, charger le fichier dans un dataframe avec la
commande dido_read_delim().
data <- dido_read_delim("exemple.csv")
knitr::kable(head(data, n = 5))| OPE | ANNEE | FILIERE | EPCI | CAT | NAF2 | GS | CONSO | 
|---|---|---|---|---|---|---|---|
| Aé | 2019 | G | 200036465 | RES | NA | R | 1039 | 
| ESL | 2019 | G | 200034023 | ENT_PRO | NA | I | 552 | 
| ÇÀ | 2019 | G | 200034270 | RES | NA | R | 75914 | 
| RGDS | 2019 | G | 200034635 | ENT | 10 | I | 454 | 
| SîCÂE | 2019 | G | 200037059 | ENT_PRO | NA | I | 288821 | 
Si votre fichier est dans un format autre que UTF-8 ou
que le séparateur de champ est la virgule (,) à vous devez
préciser delim et/ou locale :
dido_read_delim(dido_example("csv-win-char.csv"),
                delim = ",",
                locale = locale(encoding = "WINDOWS-1252")
)
#> # A tibble: 5 × 8
#>   OPE   ANNEE FILIERE EPCI      CAT     NAF2  GS    CONSO 
#>   <chr> <chr> <chr>   <chr>     <chr>   <chr> <chr> <chr> 
#> 1 Aé    2019  G       200036465 RES     NA    R     1039  
#> 2 ESL   2019  G       200034023 ENT_PRO NA    I     552   
#> 3 ÇÀ    2019  G       200034270 RES     NA    R     75914 
#> 4 RGDS  2019  G       200034635 ENT     10    I     454   
#> 5 SîCÂE 2019  G       200037059 ENT_PRO NA    I     288821L’ajout des lignes d’entêtes spécifiques
didoscalim peut analyser le fichier et proposer un premier niveau de description.
| OPE | ANNEE | FILIERE | EPCI | CAT | NAF2 | GS | CONSO | 
|---|---|---|---|---|---|---|---|
| OPE | Millésime des données | FILIERE | Code de l’EPCI | CAT | NAF2 | GS | CONSO | 
| texte | annee | texte | cog_epci_2023 | texte | entier | texte | entier | 
| n/a | n/a | n/a | n/a | n/a | s/u | n/a | s/u | 
| OPE | ANNEE | FILIERE | EPCI | CAT | NAF2 | GS | CONSO | 
| Aé | 2019 | G | 200036465 | RES | NA | R | 1039 | 
didoscalim reconnait les champs EPCI et
ANNEE et propose des descriptions/types/unités
raisonnables. Il est recommandé de les garder. Le millésime des champs
cog_* comme celui du champ EPCI est par défaut
l’année en cours, vous pouvez préciser le millésime à utiliser avec le
paramètre cog_year (cf exemple complet ci-dessous).
Si le fichier source utilise la virgule (,) comme
séparateur décimal, vous devez préciser l’argument locale
:
Pour aller plus loin, vous pouvez soit écrire le fichier tel quel
avec dido_write_csv() et l’éditer à la main. Soit utiliser
le paramètre params de la commande
dido_csv().
Voici un exemple complet pour le fichier exemple :
params = list(
  OPE = list(name = "OPERATEUR", description = "Nom de l'opérateur"),
  FILIERE = list(description = "Filière"),
  CAT = list(description = "Catégorie de la consommation"),
  NAF2 = list(description = "Code NAF à 2 positions du secteur (NAF rev2 2008)", type = "naf_division"),
  CONSO = list(description = "Consommation (en MWh)", unit = "MWh")
)
result <- dido_csv(data, params = params, cog_year = 2020)
knitr::kable(head(result, n = 5))| OPE | ANNEE | FILIERE | EPCI | CAT | NAF2 | GS | CONSO | 
|---|---|---|---|---|---|---|---|
| Nom de l’opérateur | Millésime des données | Filière | Code de l’EPCI | Catégorie de la consommation | Code NAF à 2 positions du secteur (NAF rev2 2008) | GS | Consommation (en MWh) | 
| texte | annee | texte | cog_epci_2020 | texte | naf_division | texte | entier | 
| n/a | n/a | n/a | n/a | n/a | n/a | n/a | MWh | 
| OPERATEUR | ANNEE | FILIERE | EPCI | CAT | NAF2 | GS | CONSO | 
| Aé | 2019 | G | 200036465 | RES | NA | R | 1039 | 
travailler avec un fichier source volumineux
Si vous travaillez sur un fichier de données volumineux, la méthode
dido_csv peut prendre un temps de traitement certain.
Pour tester la génération des entêtes du CSV augmenté, vous pouvez travailler sur un sous-ensemble de votre dataframe :
Attention, toutefois, si vous vous appuyez sur la détection automatique des colonnes, utilisez un nombre de lignes suffisamment grand : 10 000 voire 1 000 lignes devrait suffire dans la majeure partie des cas pour réduire le temps de traitement largement en dessous de la seconde tout en permettant une bonne détection automatique.
L’écriture du fichier au bon format.
dido_write_csv(result, "resultat.csv")Vous pouvez télécharger le fichier généré
résumé.
Une fois que la configuration de params est correcte,
vous pouvez chainer avec l’opérateur magrittr::%>% :
require(magrittr)
#> Le chargement a nécessité le package : magrittr
dido_read_delim(dido_example("exemple.csv")) %>%
  dido_csv(params = params) %>%
  dido_write_csv("/tmp/resultat.csv")