library(didoscalim)
#> ✖ Environnement DiDo actif : DEV
Le 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 288821
L’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")