Hackeando o R: Produzindo Relatórios Automáticos no R

Um dos maiores benefícios da linguagem em R está na facilidade do trabalho com análise de dados, sendo uma das etapas mais importantes no trabalho com dados contida na visualização e comunicação dos resultados. A linguagem R facilita também esse trabalho, utilizando o Rmarkdown para criar apresentações a partir do código e que tenha diversos formatos: PDF, HTML, Word e entre outros. No Hackeando o R de hoje, iremos aprender a criar relatórios automáticos no R, com base no conhecimento introdutório do nosso curso de Produção de Relatórios no R.

A maneira mais comum de criar um relatório no R é utilizando a ferramenta Rmarkdown. Para utilizada é importante que se tenha instalado o Rstudio, o pacote {rmarkdown} e também, para caso haja a criação de documentos PDF, um distribuidor de LaTeX. Para o caso, pode-se utilizar o tinytex, sendo sua instalação facilitada no R utilizando os seguintes código.


# Instala o pacote tinytex

install.packages("tinytex")

# Instala o distribuidor no computado

tinytex::install_tinytex()

Após isso, podemos criar documentos PDF com o Rstudio. Para a criação, cria-se um documento em Rmarkdown e configuramos o YAML e os chunks do código. Para criar o documento, vá em File > New File > R markdown.

Aparecerá uma tela para escolher o output do documento, como queremos um documento em PDF, selecionamos essa opção.

 

Temos a opção de criar relatório automáticos a partir de um relatório customizados, no qual ensinamos a como criar nesse post.

Criamos nosso código com base em um Relatório automático do IPCA-15.

Para se aprofundar no mundo do Rmarkdown, veja nosso Curso de Produção de Relatórios em Rmarkdown, e caso queira como coletar, tratar e visualizar dados sobre o IPCA-15, veja nosso Curso de Análise de Conjuntura.


---
title: "IPCA-15"
output: pdf_document
---

# Configurações dos chunks
knitr::opts_chunk$set(
echo = FALSE, # não mostra o código
eval = TRUE, # executar o código
fig.cap = "", # título do gráfico
results = "asis", # formato de renderização de texto
fig.width = 8, # largura do gráfico
fig.height = 4, # altura do gráfico
fig.align = "center", # alinhamento horizontal do gráfico
out.width = "100%", # redimensionamento do gráfico (aumentar/diminuir em %)
warning = FALSE, # exibir avisos do console
message = FALSE, # exibir mensagens do console
size = "tiny" # tamanho da fonte
)

# Carrega os pacotes

library(tidyverse)
library(sidrar)
library(scales)
library(ggrepel)
library(png)
library(grid)
library(forecast)
library(xts)
library(reshape2)
library(RcppRoll)

 

 

</pre>
# Cria a função para calcular o IPCA 15 acumulado em 12 meses

acum_p <- function(data, n){

factor <- (1+(data/100))

prod <- RcppRoll::roll_prodr(factor, n = n)

final <- (prod-1)*100

return(final)

}

# Cria um vetor de cores para utilizar no gráfico dos grupos do IPCA 15

colours <- c("#428953", "#CE2929", "#A3DD57", "#77E599", "#5675D6",
"#65ECEF", "#FF8B07", "#D0B100", "#636363")
<pre>

 

# IPCA-15

### Variação Mensal</pre></pre>
# Coleta os dados mensais do IPCA-15 através do SIDRA

ipca15 <- get_sidra(api = "/t/3065/n1/all/v/355/p/all/d/v355%202") %>%
mutate(date = parse_date(`Mês (Código)`, format = "%Y%m")) %>%
select(date, Valor) %>%
rename(ipca15_mensal = "Valor") %>%
as_tibble()

# Gráfico da variação mensal do IPCA-15

ggplot(data = ipca15, aes(x = date, y = ipca15_mensal))+
geom_line(size = .8, colour = "darkblue")+
geom_hline(yintercept = 0, colour = "red", linetype = 'dashed')+
labs(title = "Inflação Mensal IPCA-15",
caption = "Fonte: analisemacro.com.br com dados do IBGE",
x = "",
y = "")+
scale_x_date(breaks = date_breaks('1 year'),
labels = date_format("%Y"))+
theme(axis.text.x = element_text(angle=45,
hjust=1),
panel.background = element_rect(fill='white',
colour='white'))
<pre>

### Variação Acumulada em 12 meses</pre>
# Calcula a variação acumulada em 12 meses

ipca15 <- ipca15 %>%
mutate(ipca15_anual = acum_p(ipca15_mensal, 12))

# Cria os valores da meta de inflação

meta <- c(rep(4.5, 139), rep(4.25, 12),
rep(4, 12), rep(3.75, 12), rep(3.5, 12), rep(3.25, 12))

meta_max <- c(rep(4.5+2, 115), meta[-(1:115)]+1.5)
meta_min <- c(rep(4.5-2, 115), meta[-(1:115)]-1.5)

metas <- tibble(lim_sup=meta_max, meta=meta,
lim_inf=meta_min,
date = seq(as.Date('2007-06-01'), as.Date('2023-12-01'),
by='1 month'))

# Junta em tibble os dados da meta e do IPCA-15

ipca15 <- inner_join(ipca15, metas, by='date')

# Plota a variação acumulada em 12 meses do IPCA-15 em conjunto com as metas

ggplot(ipca15, aes(x = date, y = ipca15_anual))+
geom_ribbon(aes(ymin=lim_inf, ymax=lim_sup),
colour='grey70', alpha=0.2)+
geom_line(aes(y=ipca15_anual, colour='Inflação 12 meses'), size=.8)+
geom_line(aes(y=meta, colour='Meta de Inflação'), size=.8)+
scale_colour_manual('',
values=c('Inflação 12 meses'='darkblue',
'Meta de Inflação'='red'))+
labs(title='Inflação medida pelo IPCA-15 acumulado em 12 meses',
caption='Fonte: analisemacro.com.br com dados do IBGE.',
x = "",
y = "")+
scale_x_date(breaks = date_breaks("1 year"),
labels = date_format("%Y"))+
theme(axis.text.x=element_text(angle=45, hjust=1),
legend.position = c(.2,.85),
legend.key.size = unit(0.2, "cm"),
plot.title = element_text(size=12, face='bold'),
panel.background = element_rect(fill='white',
colour='white'))+
geom_label_repel(label=round(tail(ipca15$ipca15_anual, 1) ,2),
nudge_y = 2,
nudge_x = -2,
data = tail(ipca15, 1),
color = 'bl
<pre>

 

 


### Sazonalidade

É possível visualizar a sazonalidade do IPCA-15 e ver qual mês tende a possuir as menores ou maiores variações.</pre>
# Trata os dados do IPCA 15</pre>
# Trata os dados do IPCA 15

ipca15ts <- ts(ipca15$ipca15_mensal, start = c(2000,05), freq = 12)

# Visualiza a sazonalidade

ggsubseriesplot(ipca15ts)+
theme(panel.background = element_rect(fill='white',
colour='white'))+
labs(x = "",
y = "",
title = "Sazonalidade - IPCA-15",
caption = "Fonte: analisemacro.com.br com dados do IBGE")
<pre>

 

 

Criado o código nos chunks, cria-se o relatório utilizando o botão knit no Rstudio. O resultado aparecerá em um PDF na pasta em que utilizou como trabalho no Rstudio.

___________________

O processo envolve muito mais possibilidades de criação, além também da customização. Você pode aprender a criar Relatórios mais completos a partir do nosso Curso de Produção de Relatórios em Rmarkdown.

___________________

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como tratar dados no Python? Parte 2: filtrando linhas

Como filtrar somente as linhas que interessam em uma tabela de dados usando Python? Neste tutorial mostramos os métodos de filtros de linhas disponíveis na biblioteca pandas, que tem como vantagem sua sintaxe simples e prática.

Criando IA Assistant usando Shiny no Python

Nesta postagem, ensinamos a como criar um chatbot interativo utilizando o Shiny Python. Veremos os principais conceitos sobre o módulo Chat do Shiny e como integrá-lo a modelos de IA generativa, como Gemini, para criar um chatbot funcional em poucos passos.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.