knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
The insee package contains tools to easily download data and metadata from INSEE BDM database. Using embedded SDMX queries, get the data of more than 140 000 INSEE series from BDM database (Banque de données macroéconomiques).
# Get the development version from GitHub # install.packages("devtools") # devtools::install_github("hadrilec/insee") # Get the CRAN version install.packages("insee")
# examples below use tidyverse packages library(tidyverse) library(insee)
dataset = get_dataset_list()
idbank_list = get_idbank_list()
idbank_list_selected = idbank_list %>% filter(nomflow == "ENQ-CONJ-ACT-IND") %>% #industry activity survey filter(dim4 == "A88-29") %>% # 29 : automotive industry, A88 : aggregation level - 88 sectors filter(dim8 == "CVS") %>% #seasonally adjusted filter(dim5 == "SOLDE_PROPORTION") %>% #balance of opinion filter(dim2 == "ECAI_TPE") #expected trend in employment
idbank_list_selected = idbank_list_selected %>% mutate(title = get_insee_title(idbank, lang = "en"))
list_idbank = idbank_list_selected %>% pull(idbank)
data = get_insee_idbank(list_idbank)
Sys.setenv(http_proxy = "my_proxy_server") Sys.setenv(https_proxy = "my_proxy_server")
library(tidyverse) idbank_list = get_idbank_list() df_idbank_list_selected = idbank_list %>% filter(nomflow == "CNT-2014-PIB-EQB-RF") %>% # Gross domestic product balance filter(dim1 == "T") %>% #quarter filter(dim4 == "PIB") %>% #GDP filter(dim6 == "TAUX") %>% #rate filter(dim10 == "CVS-CJO") #SA-WDA, seasonally adjusted, working day adjusted idbank = df_idbank_list_selected %>% pull(idbank) data = get_insee_idbank(idbank) #plot ggplot(data, aes(x = DATE, y = OBS_VALUE)) + geom_col() + ggtitle("French GDP growth rate, quarter-on-quarter, sa-wda") + labs(subtitle = sprintf("Last updated : %s", data$TIME_PERIOD[1]))
library(tidyverse) library(lubridate) idbank_list = get_idbank_list() df_idbank_list_selected = idbank_list %>% filter(nomflow == "IPC-2015") %>% #Inflation dataset filter(dim1 == "M") %>% # monthly filter(str_detect(dim4, "^[0-9]{2}$")) %>% # coicop aggregation level filter(dim6 == "INDICE") %>% # index filter(dim7 == "ENSEMBLE") %>% # all kinds of household filter(dim8 == "FE") %>% # all France including overseas departements mutate(title = get_insee_title(idbank)) list_idbank = df_idbank_list_selected %>% pull(idbank) data = get_insee_idbank(list_idbank, startPeriod = "2015-01") n_sep = str_count(data$TITLE_FR[1], " - ") + 1 data_plot = data %>% separate(TITLE_EN, into = paste0("title", 1:n_sep), sep = " - ", remove = FALSE, fill = "right") %>% mutate(title6 = case_when(is.na(title6) ~ title5, TRUE ~ as.character(title6))) %>% mutate(title6 = substr(title6, 1 , 22)) %>% mutate(month = month(DATE)) %>% arrange(DATE) %>% group_by(title6, month) %>% mutate(growth = 100 * (OBS_VALUE / dplyr::lag(OBS_VALUE) - 1)) ggplot(data_plot, aes(x = DATE, y = growth)) + geom_col() + facet_wrap(~title6, scales = "free") + ggtitle("French inflation, by product categories, year-on-year") + labs(subtitle = sprintf("Last updated : %s", data_plot$TIME_PERIOD[nrow(data_plot)]))
library(tidyverse) dataset_list = get_dataset_list() idbank_list = get_idbank_list() df_idbank_list_selected = idbank_list %>% filter(nomflow == "CHOMAGE-TRIM-NATIONAL") %>% #Unemployment dataset mutate(title = get_insee_title(idbank)) %>% filter(dim2 == "CTTXC") %>% #unemployment rate based on ILO standards filter(dim4 == "FE") %>% # all France including overseas departements filter(dim5 == 0) # men and women list_idbank = df_idbank_list_selected %>% pull(idbank) data = get_insee_idbank(list_idbank, startPeriod = "2000-01") n_sep = str_count(data$TITLE_FR[1], " - ") + 1 data_plot = data %>% separate(TITLE_EN, into = paste0("title", 1:n_sep), sep = " - ", remove = FALSE, fill = "right") ggplot(data_plot, aes(x = DATE, y = OBS_VALUE, colour = title2)) + geom_line() + geom_point() + ggtitle("French unemployment rate, by age") + labs(subtitle = sprintf("Last updated : %s", data_plot$TIME_PERIOD[1]))
library(tidyverse) dataset_list = get_dataset_list() idbank_list = get_idbank_list() df_idbank_list_selected = idbank_list %>% filter(nomflow == "POPULATION-STRUCTURE") %>% #population dataset mutate(title = get_insee_title(idbank)) %>% filter(dim2 == "POPULATION_1ER_JANVIER") %>% #population at the beginning of the year filter(dim5 == "FE") %>% # all France including overseas departements filter(dim6 == 0) %>% # men and women filter(dim7 %in% c("00-19", "20-59", "60-")) #age ranges list_idbank = df_idbank_list_selected %>% pull(idbank) data = get_insee_idbank(list_idbank) n_sep = str_count(data$TITLE_FR[1], " - ") + 1 data_plot = data %>% separate(TITLE_EN, into = paste0("title", 1:n_sep), sep = " - ", remove = FALSE, fill = "right") %>% mutate(OBS_VALUE = OBS_VALUE / 10^6) ggplot(data_plot, aes(x = DATE, y = OBS_VALUE, fill = title3)) + geom_area() + ggtitle("French population in millions, by age") + labs(subtitle = sprintf("Last updated : %s", data_plot$TIME_PERIOD[1]))
library(insee) library(tidyverse) library(raster) library(rgdal) library(broom) library(viridis) idbank_list = get_idbank_list() dataset_list = get_dataset_list() list_idbank = idbank_list %>% filter(nomflow == "TCRED-ESTIMATIONS-POPULATION") %>% filter(dim6 == "00-") %>% #all ages filter(dim5 == 0) %>% #men and women filter(str_detect(dim4, "^D")) %>% #select only departements mutate(title = get_insee_title(idbank)) list_idbank_selected = list_idbank %>% pull(idbank) # get population data by departement pop = get_insee_idbank(list_idbank_selected) #get departements' geographical limits FranceMap <- raster::getData(name = "GADM", country = "FRA", level = 2) # extract the population by departement in 2020 pop_plot = pop %>% group_by(TITLE_EN) %>% filter(DATE == "2020-01-01") %>% mutate(dptm = gsub("D", "", REF_AREA)) %>% filter(dptm %in% FranceMap@data$CC_2) %>% mutate(dptm = factor(dptm, levels = FranceMap@data$CC_2)) %>% arrange(dptm) %>% mutate(id = dptm) vec_pop = pop_plot %>% pull(OBS_VALUE) # add population data to the departement object map FranceMap@data$pop = vec_pop # extract the departements' limits from the spatial object FranceMap_tidy <- broom::tidy(FranceMap) # mapping table dptm_df = data.frame(dptm = FranceMap@data$CC_2, dptm_name = FranceMap@data$NAME_2, pop = FranceMap@data$pop, id = rownames(FranceMap@data)) # add population data to departement dataframe FranceMap_tidy_final = FranceMap_tidy %>% left_join(dptm_df, by = "id") %>% dplyr::select(long, lat, pop, group, id) ggplot() + geom_polygon(data = FranceMap_tidy_final, aes(fill = pop, x = long, y = lat, group = group) , size = 0, alpha = 0.9) + coord_map() + theme_void() + scale_fill_viridis() + ggtitle("Distribution of the population within French territory in 2020")
Feel free to contact me with any question about this package using this e-mail address.
This package is in no way officially related to or endorsed by INSEE.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.