Nothing
#' @title PIB MUNICIPAL - Municipal GDP
#'
#' @description Loads information on gross domestic product at current prices, taxes, net of subsidies, on products at current prices and gross value added at current prices, total and by economic activity, and respective shares.
#'
#' @param dataset A dataset name ("pibmunic") with Municipal GDP information. You can also use SIDRA codes (See \url{https://sidra.ibge.gov.br/pesquisa/pib-munic/tabelas})
#' @inheritParams load_baci
#' @param geo_level A \code{string} that defines the geographic level of the data. Can be one of "country", "state" or "municipality".
#'
#' @return A \code{tibble}.
#'
#' @export
#'
#' @examples \dontrun{
#' # download treated municipal GDP data at the state level for 2010 to 2012
#' data <- load_pibmunic(
#' raw_data = FALSE,
#' geo_level = "state",
#' time_period = 2010:2012
#' )
#' }
load_pibmunic <- function(dataset = "pibmunic", raw_data = FALSE,
geo_level, time_period,
language = "eng") {
##############################
## Binding Global Variables ##
##############################
sidra_code <- available_time <- legal_amazon <- municipio_codigo <- ano <- NULL
ano_codigo <- geo_id <- nivel_territorial <- nivel_territorial_codigo <- NULL
unidade_de_medida <- unidade_de_medida_codigo <- valor <- variavel <- variavel_codigo <- NULL
#############################
## Define Basic Parameters ##
#############################
param <- list()
param$source <- "pibmunic"
param$dataset <- dataset
param$geo_level <- geo_level
param$time_period <- time_period
param$language <- language
param$raw_data <- raw_data
# check if dataset, geo_level, and time_period are supported
check_params(param)
if (!is.numeric(param$dataset)) {
param$code <- datasets_link() %>%
dplyr::filter(dataset == param$dataset) %>%
dplyr::select(sidra_code) %>%
unlist() %>%
as.numeric()
} else {
param$code <- param$dataset
}
##############
## Download ##
##############
# We need to show year that is being downloaded as well
# Heavy Datasets may take several minutes
dat <- as.list(as.character(param$time_period)) %>%
purrr::map(function(year_num) {
# suppressMessages(
sidra_download(
sidra_code = param$code,
year = year_num,
geo_level = param$geo_level
)
# )
}) %>%
dplyr::bind_rows() %>%
tibble::as_tibble()
## Return Raw Data
if (param$raw_data) {
return(dat)
}
######################
## Data Enginnering ##
######################
dat <- dat %>%
janitor::clean_names() %>%
dplyr::mutate_all(function(var) {
stringi::stri_trans_general(str = var, id = "Latin-ASCII")
})
dat <- dat %>%
dplyr::select(-c(nivel_territorial_codigo, nivel_territorial, ano_codigo)) %>%
dplyr::mutate(valor = as.numeric(valor))
## Only Keep Valid Observations
dat <- dat %>%
dplyr::filter(!is.na(valor))
#########################################
## Create Geographical Unit Identifier ##
#########################################
if (geo_level == "country") {
dat$geo_id <- dat$brasil
dat <- dplyr::select(dat, -"brasil_codigo", -"brasil")
}
if (geo_level == "state") {
dat$geo_id <- dat$unidade_da_federacao_codigo
dat <- dplyr::select(dat, -"unidade_da_federacao_codigo", -"unidade_da_federacao")
}
if (geo_level == "municipality") {
dat$geo_id <- dat$municipio_codigo
dat <- dplyr::select(dat, -"municipio", -"municipio_codigo")
}
################################
## Harmonizing Variable Names ##
################################
dat <- dat %>%
dplyr::select(-unidade_de_medida, -unidade_de_medida_codigo)
dat <- dat %>%
dplyr::arrange(variavel_codigo, variavel) %>%
tidyr::pivot_wider(
id_cols = c(ano, geo_id),
names_from = variavel:variavel_codigo,
values_from = valor,
names_sep = "_V",
values_fn = sum,
values_fill = NA
) %>%
janitor::clean_names()
if (language == "eng") {
dat <- dat %>%
dplyr::rename(year = ano)
}
###############
## Labelling ##
###############
labelled <- function(x, label) {
Hmisc::label(x) <- label
x
}
label_data_eng <- function(df, cols, dic) {
label_value <- as.character(dic[dic$var_code == cols, "var_eng"])
df <- df %>%
dplyr::mutate_at(
dplyr::vars(tidyr::matches(cols)),
~ labelled(., as.character(dic[dic$var_code == cols, "var_eng"]))
)
return(df)
}
label_data_pt <- function(df, cols, dic) {
label_value <- as.character(dic[dic$var_code == cols, "var_pt"])
df <- df %>%
dplyr::mutate_at(
dplyr::vars(tidyr::matches(cols)),
~ labelled(., as.character(dic[dic$var_code == cols, "var_pt"]))
)
return(df)
}
## Load Dictionary
dic <- load_dictionary(param$dataset)
types <- as.character(dic$var_code)
types <- types[types != "0"] ## Remove 0
if (language == "eng") {
for (i in seq_along(types)) {
dat <- label_data_eng(dat, cols = types[i], dic = dic)
}
}
if (language == "pt") {
for (i in seq_along(types)) {
dat <- label_data_pt(dat, cols = types[i], dic = dic)
}
}
##########################
## Returning Data Frame ##
##########################
return(dat)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.