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