---
title: "ipeadatar"
subtitle: "API Wrapper for Ipeadata"
author: "Institute for Applied Economic Research (Ipea)"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{ipeadatar}
  %\VignetteEncoding{UTF-8}
  %\VignetteEngine{knitr::rmarkdown}
editor_options: 
  markdown: 
    wrap: 72
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  eval = FALSE
)
```

## Introduction

`ipeadatar` provides direct access to the macroeconomic, financial, and
regional database maintained by the Institute for Applied Economic
Research (Ipea) via the Ipeadata API.

The package allows users to search for series, retrieve metadata, and
download series data directly from R.

## Installation

You can install the released version from CRAN:

```{r}
install.packages("ipeadatar")
```

Or the development version from GitHub:

```{r}
pak::pak("gomesleduardo/ipeadatar")
```

Then load the package:

```{r}
library(ipeadatar)
```

## Main functions

| Function                  | Description                             |
|---------------------------|-----------------------------------------|
| `available_series()`      | Lists available Ipeadata series         |
| `available_subjects()`    | Lists available subjects                |
| `available_territories()` | Lists available territorial divisions   |
| `search_series()`         | Searches for series using keywords      |
| `metadata()`              | Retrieves metadata for requested series |
| `ipeadata()`              | Retrieves data for requested series     |

## Available series

Use `available_series()` to list the series available from the Ipeadata
API.

```{r}
series <- available_series(label = FALSE)
head(series)
```

The column `code` can be used as input for `metadata()` and
`ipeadata()`.

```{r}
series_br <- available_series(language = "br", label = FALSE)
head(series_br)
```

## Available subjects

Use `available_subjects()` to list the subjects available in Ipeadata.

```{r}
subjects <- available_subjects(label = FALSE)
head(subjects)
```

## Available territorial divisions

Use `available_territories()` to list territorial divisions available in
Ipeadata.

```{r}
territories <- available_territories(label = FALSE)
head(territories)
```

## Search series

Use `search_series()` to search for series using one or more terms.

```{r}
search_series(terms = "inflation", label = FALSE)
```

You can also search in Brazilian Portuguese:

```{r}
search_series(
  terms = "inflação",
  language = "br",
  label = FALSE
)
```

If `terms = NULL`, all available series are returned.

```{r}
search_series(label = FALSE)
```

## Metadata

After identifying a series code, use `metadata()` to retrieve metadata.

For example, `"PRECOS12_IPCA12"` refers to Brazil's official consumer
price inflation index, IPCA.

```{r}
meta <- metadata(
  code = "PRECOS12_IPCA12",
  label = FALSE
)

meta
```

For multiple series:

```{r}
meta <- metadata(
  code = c("PRECOS12_IPCA12", "BM12_TJCDI12"),
  label = FALSE
)

meta
```

## Data

Use `ipeadata()` to retrieve the observations of a requested series.

```{r}
ipca <- ipeadata(
  code = "PRECOS12_IPCA12",
  label = FALSE
)

head(ipca)
```

The returned data frame contains the series code, date, value,
territorial unit name, and territorial code.

## Basic plot

The downloaded data can be used directly with base R or other
visualization packages.

```{r}
ipca <- ipeadata(
  code = "PRECOS12_IPCA12",
  label = FALSE
)

plot(
  ipca$date,
  ipca$value,
  type = "l",
  xlab = "Date",
  ylab = "Value",
  main = "IPCA"
)
```

## Variable labels

By default, functions add variable labels using `sjlabelled`.

```{r}
series <- available_series(label = TRUE)
```

To return a plain data frame without labels, use:

```{r}
series <- available_series(label = FALSE)
```

This option is available in the main functions:

```{r}
available_series(label = FALSE)
available_subjects(label = FALSE)
available_territories(label = FALSE)
search_series(terms = "rural", label = FALSE)
metadata(code = "PRECOS12_IPCA12", label = FALSE)
ipeadata(code = "PRECOS12_IPCA12", label = FALSE)
```
