--- title: "Introduction to sidrar" author: "Renato Prado Siqueira" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Introduction to sidrar} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE, collapse = TRUE, comment = "#>") ``` ## Overview `sidrar` is an R interface to SIDRA (*Sistema IBGE de Recuperação Automática*), the system through which the Brazilian Institute of Geography and Statistics (IBGE) publishes aggregate statistics. The usual workflow is: 1. find a table with `search_sidra()`; 2. inspect its available dimensions with `info_sidra()`; and 3. retrieve a selection with `get_sidra()`. Network-dependent examples are not evaluated while the vignette is built. ## Installation Install the released version from CRAN: ```{r, eval = FALSE} install.packages("sidrar") ``` Install the development version from GitHub with `pak`: ```{r, eval = FALSE} # install.packages("pak") pak::pak("rpradosiqueira/sidrar") ``` ## Find and inspect a table `search_sidra()` searches titles in IBGE's official aggregate catalog. Its result is a character vector whose names are the SIDRA table codes: ```{r, eval = FALSE} library(sidrar) search_sidra("IPCA") search_sidra(c("contas", "nacionais")) ``` The search is case- and accent-insensitive. When several terms are supplied, all terms must occur in the title, but they need not be adjacent. Once you have a code, inspect the periods, variables, classifications, categories, and territorial levels accepted by the table: ```{r, eval = FALSE} metadata <- info_sidra(7060) names(metadata) metadata$variable metadata$classific_category metadata$geo ``` Set `wb = TRUE` to open the official table descriptor in the default browser. The function no longer prompts for confirmation: ```{r, eval = FALSE} info_sidra(7060, wb = TRUE) ``` ## Build a structured request This request retrieves the monthly IPCA for the general index in Campo Grande, Mato Grosso do Sul, over the 12 most recent periods: ```{r, eval = FALSE} ipca <- get_sidra( x = 7060, variable = 63, period = c(last = 12), geo = "City", geo.filter = list(City = 5002704), classific = "c315", category = list(7169) ) ``` `geo.filter` may also select every unit inside a higher territorial level. For example, the following pattern requests cities inside Mato Grosso do Sul: ```{r, eval = FALSE} get_sidra( x = 7060, variable = 63, period = "last", geo = "City", geo.filter = list(State = 50), classific = "c315", category = list(7169) ) ``` The existing defaults remain unchanged: descriptive headers are enabled, `format = 4` requests codes and names, `digits = "default"` uses the table's standard precision, and `variable = "allxp"` excludes automatically generated percentage variables. ## Use an API path or full URL If a query was assembled elsewhere, pass either its path: ```{r, eval = FALSE} get_sidra( api = "/t/7060/n1/all/v/63/p/last/c315/7169" ) ``` or the complete official HTTPS URL: ```{r, eval = FALSE} get_sidra( api = paste0( "https://apisidra.ibge.gov.br/values/", "t/7060/n1/all/v/63/p/last/c315/7169" ) ) ``` Full URLs are restricted to the official `https://apisidra.ibge.gov.br/values` endpoint. Percent-encoded segments such as `%20` are preserved. If the path contains `/h/n`, the first observation is kept as data instead of being interpreted as a header. ## Preserve SIDRA's special values SIDRA uses symbols with specific meanings, including `"-"` for an absolute zero, `"X"` for an inhibited value, `".."` when a value does not apply, and `"..."` when it is unavailable. Earlier versions returned a numeric `Valor` column, so special symbols became `NA`. That remains the default for compatibility. Use `value_type = "character"` to keep the symbols directly: ```{r, eval = FALSE} raw <- get_sidra( api = "/t/1849/n3/all/v/811/p/2018/c12762/all", value_type = "character" ) ``` Use `value_type = "both"` to keep numeric `Valor` and append `Valor_raw`: ```{r, eval = FALSE} both <- get_sidra( api = "/t/1849/n3/all/v/811/p/2018/c12762/all", value_type = "both" ) ``` ## Network behavior Requests use HTTPS, UTF-8 decoding, an identifying user agent, a timeout, and limited retries for transient failures. Customize the timeout and retry count with: ```{r, eval = FALSE} options( sidrar.timeout = 120, sidrar.retries = 4 ) ``` Invalid parameters and API limits are reported with the response returned by SIDRA. See the [official API help](https://apisidra.ibge.gov.br/home/ajuda) for the complete query syntax and current service limits.