Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: doremifasol
Title: Data on Insee Website
Version: 0.5.5.9001
Version: 0.5.6.0001
Authors@R: c(
person("Pierre", "Lamarche", email = "[email protected]", role = c("aut", "cre")),
person("Pierre-Yves", "Berrard", role = "aut", email = "[email protected]"),
Expand Down
17 changes: 11 additions & 6 deletions R/chargerDonnees.R
Original file line number Diff line number Diff line change
Expand Up @@ -85,21 +85,26 @@ chargerDonnees <- function(telechargementFichier, vars = NULL, ...) {
res <- as.data.frame(do.call(rbind, res_int))
}
} else if (telechargementFichier$type == "xlsx") {
if (!is.null(telechargementFichier$argsImport$sheet)) {
res <- as.data.frame(do.call(readxl::read_xlsx, telechargementFichier$argsImport))
} else {
if (!is.null(telechargementFichier$argsImport$sheet) && telechargementFichier$argsImport$sheet != "__MELODI__") {
res <- as.data.frame(do.call(readxl::read_xlsx, telechargementFichier$argsImport))
} else {
onglets <- readxl::excel_sheets(telechargementFichier$argsImport$path)
res_int <- lapply(intersect(onglets, toupper(onglets)), function(x) {
if (!is.null(telechargementFichier$argsImport$sheet) && telechargementFichier$argsImport$sheet == "__MELODI__"){
onglets <- onglets[!onglets %in% c("M\u00e9tadonn\u00e9es", "Documentation")]
} else {
onglet <- intersect(onglets, toupper(onglets))
}
res_int <- lapply(onglets, function(x) {
telechargementFichier$argsImport[["sheet"]] <- x
table <- do.call(readxl::read_xlsx, c(telechargementFichier$argsImport, ...))
table$onglet <- x
return(as.data.frame(table))
})
#res <- as.data.frame(do.call(rbind, res_int))
res <- res_int
names(res) <- intersect(onglets, toupper(onglets))
names(res) <- onglets
}
} else if (telechargementFichier$type == "json") {
} else if (telechargementFichier$type == "json") {
if (!is.null(vars))
warning("Il n'est pas possible de filtrer les variables charg\u00e9es en m\u00e9moire sur le format JSON pour le moment.")
res <- do.call(chargerDonneesJson, telechargementFichier$argsImport)
Expand Down
2 changes: 1 addition & 1 deletion R/millesimesDisponibles.R
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
millesimesDisponibles <- function(donnees) {
## check the parameter donnees takes a valid value
donnees <- toupper(donnees)
liste_nom <- unlist(lapply(ld, function(x) return(x$nom)))
liste_nom <- toupper(unlist(lapply(ld, function(x) return(x$nom))))
if (!donnees %in% liste_nom)
stop("Le param\u00e8tre donnees est mal sp\u00e9cifi\u00e9, la valeur n'est pas r\u00e9f\u00e9renc\u00e9e")
liste_possible <- ld[which(liste_nom == donnees)]
Expand Down
16 changes: 14 additions & 2 deletions R/telechargerFichier.R
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ telechargerFichier <- function(donnees, date=NULL, telDir=getOption("doremifasol

## vérifie donnees et date. si ok les infos nécessaires sont extraites dans caract
caract <- infosDonnees(donnees, date)

## test de la connexion
if (!curl::has_internet()) stop("aucune connexion Internet")

Expand All @@ -39,7 +39,19 @@ telechargerFichier <- function(donnees, date=NULL, telDir=getOption("doremifasol
## télécharge les fichiers csv, xls, xlsx...
if (!caract$api_rest) {

nomFichier <- file.path(telDir, basename(caract$lien))
if (caract$zip){
if (grepl(".*\\.zip", basename(caract$lien))){
nomFichier <- file.path(telDir, basename(caract$lien))
} else {
nomFichier <- file.path(telDir, paste0(caract$nom, ".zip"))
}
} else {
if (grepl(paste0(".*\\.", caract$type), basename(caract$lien))){
nomFichier <- file.path(telDir, basename(caract$lien))
} else {
nomFichier <- file.path(telDir, paste0(caract$nom, ".", caract$type))
}
}
dl <- NULL

if (!file.exists(nomFichier) || force) {
Expand Down
2 changes: 1 addition & 1 deletion R/utile.R
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
infosDonnees <- function(donnees, date = NULL, silencieux = FALSE) {

donnees <- toupper(donnees) # pour rendre insensible à la casse
liste_nom <- vapply(ld, `[[`, "nom", FUN.VALUE = character(1))
liste_nom <- toupper(vapply(ld, `[[`, "nom", FUN.VALUE = character(1)))
res <- ld[liste_nom == donnees]

# 1 - identifiant introuvable
Expand Down
17 changes: 17 additions & 0 deletions R/zzz.R
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
.onLoad <- function(libname, pkgname) {
#data(liste_donnees)
if (curl::has_internet()) {
requete_melodi <- httr::GET("https://minio.lab.sspcloud.fr/pierrelamarche/melodi/liste_donnees.json")
ld_melodi <- jsonlite::fromJSON(httr::content(requete_melodi, as = "text", encoding = "utf-8"),
simplifyDataFrame = FALSE)
ld_melodi <- lapply(ld_melodi, function(x) {
within(x, {
if (!is.null(x$date_ref))
date_ref <- as.Date(date_ref, format = "%Y-%m-%d")
if(!is.null(x$separateur))
separateur <- paste0("quote(\"", separateur, "\")")
})
}
)
assign("ld", c(ld, ld_melodi),
envir = asNamespace("doremifasol")
)
}
}
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,17 @@

## Français

## 🚀 Nouvelle fonctionnalité

Le catalogue de données intègre désormais les données mises à disposition dans [l'API Melodi](https://portail-api.insee.fr/catalog/all). Outre la [liste de données] disponible dans le _package_, les données listées dans le catalogue de Melodi sont intégrées _via_ [ce fichier](https://minio.lab.sspcloud.fr/) qui est mis quotidiennement à jour.

### De quoi s'agit-il ?

Le _package_ `doremifasol` (_Données en R Mises à disposition par l’Insee et Facilement Sollicitables_) permet d'importer facilement dans R des données mises à disposition sur le site de l'Insee.

Il offre deux fonctionnalités principales :

* télécharger et importer dans R des fichiers disponibles sur insee.fr (Base Permanente des Équipements, Recensement de Population, Filosofi...) ;
* télécharger et importer dans R des fichiers disponibles sur insee.fr (Base Permanente des Équipements, Recensement de Population, Filosofi...), **y compris les données mises à disposition _via_ Melodi** ;
* requêter l'[API](https://api.insee.fr/catalogue) Sirene et recupérer les résultats dans R.

L'objectif du _package_ est de rendre transparentes les différentes tâches à réaliser avant de pouvoir traiter les données : recherche sur le site, téléchargement, décompression, import dans R...
Expand Down Expand Up @@ -91,6 +95,10 @@ Agent du Service Statistique Public, ou utilisateur des données mises à dispos

## English

## 🚀 New Feature

The data catalog now includes data made available in the [Melodi API](https://portail-api.insee.fr/catalog/all). In addition to the [list of data] available in the package, the data listed in the Melodi catalog is integrated via [this file](https://minio.lab.sspcloud.fr/) which is updated on a daily basis.

### What is it about?

`doremifasol` (data with R made available by Insee and easily retrievable in French) is a R package mainly aiming at showing off data available on Insee's website (Insee, for the French Institute for Statistics and Economic Studies), helping the user to put them on stage and extract the information they carry. So it is about analysing data, creating maps, quantifying phenomenons and in general using the data without the painful effort to retrieve them on the website, as well as import them into R's memory. The name of the _package_ stands for the five first notes of music, and pushing the metaphore, underlines its aim at helping the users to easily pratice their _solfège_ in R.
Expand Down
8 changes: 5 additions & 3 deletions tests/testthat/test_liste_donnees.R
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@ test_that("pas de valeurs incongrues", {

# lien (motif, pas existence)
url_pattern <- "^https://www.insee.fr/fr/statistiques/fichier/\\d{5,}/.+\\.(zip|xls|xlsx|parquet)$"
api_url_pattern <- "^https://api.insee.fr/entreprises/sirene(/V3.11)?/sire[nt](/(liensSuccession|nonDiffusibles))?$"
api_sirene_url_pattern <- "^https://api.insee.fr/entreprises/sirene(/V3.11)?/sire[nt](/(liensSuccession|nonDiffusibles))?$"
api_melodi_url_pattern <- "^https://api.insee.fr/melodi/.*$"
expect_true(
all(grepl(paste0(url_pattern, "|", api_url_pattern), df_ld$lien))
all(grepl(paste0(url_pattern, "|", api_sirene_url_pattern, "|", api_melodi_url_pattern), df_ld$lien))
)

# type
Expand All @@ -43,7 +44,7 @@ test_that("pas de valeurs incongrues", {

# big_zip
expect_true(
all(df_ld$big_zip[df_ld$zip] %in% c(TRUE, FALSE))
with(df_ld, all(big_zip[zip] %in% c(TRUE, FALSE)))
)

# premiere_ligne / derniere_ligne
Expand All @@ -64,3 +65,4 @@ test_that("pas de valeurs incongrues", {
)

})

19 changes: 17 additions & 2 deletions tests/testthat/test_telechargerDonnees.R
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ test_that("Télécharger des données sur l'API pour les entreprises créées un
skip_if_no_app()
check_configuration()
expect_s3_class(telechargerDonnees("SIRENE_SIRET_LIENS", argsApi = list(q = "siretEtablissementPredecesseur:32957439600019")),
"try-error")
"try-error")
})
## test dl sur l'API Sirene avec une requête sur les unités non diffusibles
test_that("Télécharger des données sur l'API pour les unités non diffusibles", {
Expand All @@ -130,5 +130,20 @@ test_that("Erreur de syntaxe dans la requête sur l'API Sirene", {
check_configuration()
expect_s3_class(telechargerDonnees("SIRENE_SIREN_NONDIFF",
argsApi = list(q = 'dateDernierTraitementUniteLegale:"2018-11-01" TO "2018-11-15"')),
"try-error")
"try-error")
})
## test dl de données sur mélodi - csv brut
test_that("Télécharger le csv sur l'API melodi", {
expect_s3_class(telechargerDonnees("DS_BPE"),
c("insee_data_frame", "data.frame"))
})
## test dl de données sur mélodi - csv zippé
test_that("Télécharger un produit csv zippé sur melodi", {
expect_s3_class(telechargerDonnees("DS_ANTIPOL_CSV_FR"),
c("insee_data_frame", "data.frame"))
})
## test dl de données sur mélodi - XLSX
test_that("Télécharger un produit xlsx zippé sur melodi", {
expect_type(telechargerDonnees("ANTIPOL_GLOBAL_T0_FR"),
"list")
})
Loading