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

Criando Tabelas com o Python: mostrando o poder da linguagem sobre o Excel

Nos dias atuais, pessoas que trabalham com dados estão constantemente confrontados com um dilema: criar uma tabela não tão genial no Excel ou manter em um formato ainda pior, como um dataframe, mas mantendo a flexibilidade de obtenção dos dados. Podemos resolver esse grande problema, unindo a flexibilidade e beleza ao usar a biblioteca great_tables do Python.

Análise do Censo Demográfico com o R

Como podemos analisar dados do Censo Demográfico para produzir pesquisas e implementar políticas públicas? Mostramos nesta postagem o resultado de uma breve análise dos dados preliminares do Censo Demográfico de 2022 usando o R.

Deploy de modelos com Python + Shinylive + GitHub gastando ZERO reais

Colocar modelos em produção pode ser um grande desafio. Lidar com custos monetários, infraestrutura operacional e complexidades de códigos e ferramentas pode acabar matando potenciais projetos. Uma solução que elimina todos estes obstáculos é a recém lançada Shinylive. Neste artigo mostramos um exemplo com um modelo de previsão para o preço do petróleo Brent.

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.