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.
___________________



