knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
library(didoscalim)
DiDo utilise un csv augmenté avec 4 lignes d'entêtes :
"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.
didoscalim
propose une fonction pour vous aider.
La génération se passe en trois étapes :
dido_read_delim()
dido_csv()
dido_write_csv()
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))
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") )
didoscalim peut analyser le fichier et proposer un premier niveau de description.
result <- dido_csv(data) knitr::kable(head(result, n = 5))
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
:
temp <- dido_csv( data, locale = locale(decimal_mark = ',') )
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))
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 :
result <- data %>% head(10000) %>% dido_csv(params = params, cog_year = 2020)
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.
dido_write_csv(result, "resultat.csv")
Vous pouvez télécharger le fichier généré
Une fois que la configuration de params
est correcte, vous pouvez chainer avec
l'opérateur magrittr::%>%
:
require(magrittr) dido_read_delim(dido_example("exemple.csv")) %>% dido_csv(params = params) %>% dido_write_csv("/tmp/resultat.csv")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.