11# ' Fonction permettant d'importer les données de l'API 'données locales' pour un couple de paramètre
22# '
3- # ' @param jeton Access token (jeton) généré sur le catalogue des API de l'Insee
43# ' @param jeu_donnees code jeu de données se composant du nom de la source, du millésime des données et parfois du millésime géographique de diffusion
54# ' @param croisement sélection de variables (composée d'une variable ou de plusieurs)
65# ' @param modalite modalités souhaitées pour les variables (dans le même ordre)
1817# '
1918# ' @examples
2019# ' \donttest{
21- # ' # Remplace jeton par la valeur du jeton genere sur le catalogue des API :
22- # ' if (exists("jeton")) {
23- # ' get_dataset(jeton,
24- # ' "GEO2017REE2017",
25- # ' "NA5_B-ENTR_INDIVIDUELLE",
26- # ' "all.all",
27- # ' "COM",
28- # ' "51108")
29- # ' }
30- # '
31- # ' # Genere une fenetre dans laquelle vous pouvez renseigner le jeton genere sur le catalogue des API
32- # ' # Permet de ne pas stocker le jeton en clair dans le programme
33- # ' if (interactive() && identical(Sys.getenv("RSTUDIO"), "1")) {
34- # ' get_dataset(rstudioapi::askForPassword("jeton:"),
35- # ' "GEO2017REE2017",
36- # ' "NA5_B-ENTR_INDIVIDUELLE",
37- # ' "all.all",
38- # ' "COM",
39- # ' "51108")
40- # ' }
41- # '
42- # ' # Necessite la modification du fichier .Renviron en ajoutant
43- # ' # une ligne jeton = "la valeur du jeton genere sur le catalogue des API"
44- # ' # Pour acceder facilement au fichier .Renviron, vous pouvez
45- # ' # utiliser la commande usethis::edit_r_environ("user")
46- # ' # Necessite de redemarer R après avoir fait la modification
47- # ' # Ce parametre doit etre mis a jour à chaque fois qu'un nouveau jeton est genere
48- # ' if (!is.na(Sys.getenv("jeton", NA))) {
49- # ' get_dataset(Sys.getenv("jeton"),
50- # ' "GEO2017REE2017",
20+ # ' get_dataset("GEO2017REE2017",
5121# ' "NA5_B-ENTR_INDIVIDUELLE",
5222# ' "all.all",
5323# ' "COM",
5626
5727
5828
59- get_dataset <- function (jeton , jeu_donnees , croisement , modalite , nivgeo , codgeo , temporisation = NA ){
29+ get_dataset <- function (jeu_donnees , croisement , modalite , nivgeo , codgeo , temporisation = NA ){
6030
6131 modalite <- stringr :: str_replace_all(modalite , ' \\ +' , ' %2B' )
6232
63- auth_header <- httr :: add_headers(' Authorization' = paste(' Bearer' ,jeton ))
33+ req <- paste0(" https://api.insee.fr/donnees-locales/donnees/geo-" ,
34+ croisement , " @" , jeu_donnees , " /" , nivgeo , " -" , codgeo , " ." , modalite )
6435
65- res <- httr :: content( httr :: GET(paste0( " https://api.insee.fr/donnees-locales/V0.1/donnees/geo- " ,
66- croisement , " @ " , jeu_donnees , " / " , nivgeo , " - " , codgeo , " . " , modalite ),
67- auth_header ),
36+ message( req )
37+
38+ res <- httr :: content( httr :: GET( req ),
6839 as = " text" , httr :: content_type_json(), encoding = ' UTF-8' )
6940
70- if (stringr :: str_detect(res , " Invalid Credentials. Make sure you have given the correct access token" )){
71- print(' Erreur - Jeton invalide' )
72- } else if (stringr :: str_detect(res , " Aucune cellule ne correspond a la requ\u 00eate" )){
41+ if (stringr :: str_detect(res , " Aucune cellule ne correspond a la requ\u 00eate" )){
7342 print(' Erreur - Param\u 00e8tre(s) de la requ\u 00eate incorrect(s)' )
74- } else if (stringr :: str_detect(res , " Resource forbidden " )){
75- print(" Erreur - Scouscription a l API donn\u 00e9es locales non r\u 00e9alis\u 00e9e" )
76- } else if (stringr :: str_detect(res , " quota" )== T ){
77- print(" Erreur- Trop de requ\u 00eates, faire une pause" )
7843 } else {
7944
8045 res <- jsonlite :: fromJSON(res )
@@ -86,46 +51,46 @@ get_dataset <- function(jeton, jeu_donnees, croisement, modalite, nivgeo, codgeo
8651 nb_var <- stringr :: str_count(croisement , " -" ) + 1
8752
8853 zone <- res $ Zone
89- info_zone <- as.data.frame(cbind(zone $ ' @ codgeo' ,zone $ ' @ nivgeo' ,do.call( " cbind " , zone $ Millesime )), stringsAsFactors = FALSE )
90- colnames(info_zone ) <- c(" codgeo" ," libgeo" , " millesime_geo " , " libelle_sans_article " , " code_article " )
54+ info_zone <- as.data.frame(cbind(zone $ ' codgeo' ,zone $ ' nivgeo' , stringsAsFactors = FALSE ) )
55+ colnames(info_zone ) <- c(" codgeo" ," libgeo" )
9156
9257 croisement <- res $ Croisement
9358 source <- as.data.frame(do.call(" cbind" , croisement $ JeuDonnees ), stringsAsFactors = FALSE )
94- colnames(source ) <- c(" jeu_donnees" , " millesime_donnees" , " lib_jeu_donnees" ," lib_source" )
95-
96- source <- cbind(source , info_zone $ millesime_geo )
97- colnames(source )[colnames(source ) == " info_zone$millesime_geo" ] <- " millesime_geo"
98- source $ source <- paste0(" Insee, " , source $ lib_source , " " , source $ millesime_donnees ,
99- " , g\u 00e9ographie au 01/01/" , source $ millesime_geo )
59+ colnames(source ) <- c(" code" , " Libelle" , " Annee" ," Source" )
10060
10161 variable <- res $ Variable
10262 temp <- variable $ Modalite
103- info_modalite <- as.data.frame(cbind(variable $ ' @ code' ,variable $ Libelle ), stringsAsFactors = FALSE )
63+ info_modalite <- as.data.frame(cbind(variable $ ' code' ,variable $ Libelle ), stringsAsFactors = FALSE )
10464
10565 liste_code <- NULL
10666 if (nb_var > 1 ) {
10767 for (i in 1 : length(temp )) {
10868 if (dim(as.data.frame(temp [[i ]]))[1 ]> 1 ){
109- liste_code_temp <- data.frame (info_modalite [i ,]$ V1 , info_modalite [i ,]$ V2 , temp [[i ]][,' @code' ], temp [[i ]][,' Libelle' ],
69+ liste_code_temp <- data.frame (info_modalite [i ,]$ V1 ,
70+ info_modalite [i ,]$ V2 ,
71+ temp [[i ]][,' code' ],
11072 stringsAsFactors = FALSE )
111- colnames(liste_code_temp ) <- c(" variable" , " lib_varible " , " modalite" , " lib_modalite " )
73+ colnames(liste_code_temp ) <- c(" variable" , " lib_variable " , " modalite" )
11274 } else {
113- liste_code_temp <- data.frame (info_modalite [i ,]$ V1 , info_modalite [i ,]$ V2 ,temp [[i ]][' @code' ],temp [[i ]][' Libelle' ],stringsAsFactors = FALSE )
114- colnames(liste_code_temp ) <- c(" variable" , " lib_varible" , " modalite" , " lib_modalite" )
75+ liste_code_temp <- data.frame (info_modalite [i ,]$ V1 ,
76+ info_modalite [i ,]$ V2 ,
77+ temp [[i ]][' code' ],
78+ stringsAsFactors = FALSE )
79+ colnames(liste_code_temp ) <- c(" variable" , " lib_variable" , " modalite" )
11580 }
11681
11782 liste_code <- rbind(liste_code_temp , liste_code )
11883 }
11984 } else {
12085 if (dim(as.data.frame(temp ))[1 ]> 1 ){
121- liste_code <- data.frame (cbind(info_modalite ,temp [,' @ code' ], temp [, ' Libelle ' ]),
86+ liste_code <- data.frame (cbind(info_modalite ,temp [,' code' ]),
12287 stringsAsFactors = FALSE )
12388 } else {
124- liste_code <- data.frame (cbind(info_modalite ,temp [ ' @ code' ], temp [ ' Libelle ' ] ),
89+ liste_code <- data.frame (cbind(info_modalite ,as.data.frame( temp ) $ code ),
12590 stringsAsFactors = FALSE )
12691 }
12792
128- colnames(liste_code ) <- c(" variable" , " lib_varible " , " modalite" , " lib_modalite " )
93+ colnames(liste_code ) <- c(" variable" , " lib_variable " , " modalite" )
12994 }
13095
13196 cellule <- as.data.frame(res $ Cellule )
@@ -138,24 +103,22 @@ get_dataset <- function(jeton, jeu_donnees, croisement, modalite, nivgeo, codgeo
138103 }
139104 colnames(var_tot ) <- c(t(var [[1 ]][2 ]))
140105
141- donnees <- cbind(cellule $ Zone , cellule $ Mesure , var_tot , cellule $ Valeur )
142- colnames(donnees ) <- c(" codgeo" , " nivgeo" , " mesure " , " lib_mesure " , c(t(var [[1 ]][2 ])), " valeur" )
106+ donnees <- cbind(cellule $ Zone $ codgeo , cellule $ Zone $ nivgeo , var_tot , cellule $ Valeur )
107+ colnames(donnees ) <- c(" codgeo" , " nivgeo" , c(t(var [[1 ]][2 ])), " valeur" )
143108
144109 donnees <- as.data.frame(donnees )
145110
146111 } else {
147112 if (dim(as.data.frame(cellule ))[1 ]> 1 ){
148113 donnees <- do.call(" cbind" ,cellule )
149- donnees <- data.frame (donnees [,' Zone.@codgeo' ], donnees [,' Zone.@nivgeo' ],
150- donnees [,' Mesure.@code' ], donnees [,' Mesure.$' ],
151- donnees [,' Modalite.@code' ], donnees [,' Valeur' ], stringsAsFactors = FALSE )
152- colnames(donnees ) <- c(" codgeo" , " nivgeo" , " mesure" , " lib_mesure" , var [[2 ]][2 ], " valeur" )
114+ donnees <- data.frame (donnees [,' Zone.codgeo' ], donnees [,' Zone.nivgeo' ],
115+ donnees [,' Modalite.code' ], donnees [,' Valeur' ], stringsAsFactors = FALSE )
116+ colnames(donnees ) <- c(" codgeo" , " nivgeo" , var [[2 ]][2 ], " valeur" )
153117 } else {
154118 var <- as.character(cellule [,' Modalite..variable' ])
155119 donnees <- data.frame (cellule [' Zone..codgeo' ], cellule [,' Zone..nivgeo' ],
156- cellule [,' Mesure..code' ], cellule [,' Mesure..' ],
157120 cellule [,' Modalite..code' ], cellule [,' Valeur' ], stringsAsFactors = FALSE )
158- colnames(donnees ) <- c(" codgeo" , " nivgeo" , " mesure " , " lib_mesure " , var , " valeur" )
121+ colnames(donnees ) <- c(" codgeo" , " nivgeo" , var , " valeur" )
159122 }
160123 }
161124
0 commit comments