Como automatizar a geração de relatórios usando R Markdown?

Aprenda como utilizar R, RStudio e Markdown para automatizar e facilitar a geração dos seus relatórios técnicos. Veja como inserir códigos de R no meio do seu Markdown e use o potencial do R para os seus relatórios.

Trabalhos de engenharia são únicos. Cada serviço prestada por um engenheiro gera um relatório exclusivamente novo e diferente de tudo que seu autor já tenha feito…

Concordamos com ressalvas.

Cada serviço tem suas peculiaridades, mas, normalmente, a base teórica, que é colocada como introdução e metodologia desses relatórios pode ser aproveitada (e atualizada ao longo do tempo).

Pensando dessa forma, é possível criar modelos que irão facilitar o desenvolvimento do relatório, liberando seu tempo para pensar nas características específicas do problema que você esta resolvendo.

E como iremos criar esses modelos?

Acompanhe nosso tutorial e veja como utilizar as linguagens de programação e marcação R e Markdown e a interface visual RStudio para automatizar a geração dos seus laudos e relatórios técnicos.

Se você já visita nosso blog a um tempo, já notou que buscamos automatizar processos repetitivos, por exemplo, cálculos de planilhas de campo, processos no QGIS, tarefas no ArcGIS e referências no Word. Confira e compartilhe.

Antes de iniciarmos os trabalhos, você deverá ter instalado no seu computador os seguintes softwares (caso você não tenha, clique nos links para realizar o download deles e lembre-se de utilizar as versões mais recentes):

Salienta-se que o R é a linguagem de programação para estatística que já utilizamos aqui com frequência; o RStudio é uma interface gráfica que auxilia o uso e desenvolvimento de roteiros de R e o MikTeX é um implemento dos programas TeX/LaTeX para criação de “belos documentos”.

Criando seu primeiro documento R Markdown

Primeiramente, Markdown é uma linguagem de marcação simples utilizada para conversão do seu texto para HTML (no nosso caso, iremos converter para PDF). Já o R Markdown nada mais é do que a união desta linguagem com R.

Opção para criação de documento R Markdown no RStudio.
Opção para criação de documento R Markdown no RStudio.

No RStudio, para criar um arquivo R Markdown, vá em Arquivo (File) > Novo Arquivo (New File) > R Markdown.

Para utilizar R Markdown no RStudio, você vai precisar instalar alguns pacotes (e.g. knitr e rmarkdown), porém, o próprio RStudio detecta se você tem os pacotes e caso não tenha, ele já faz as instalações (clique em sim nas janelas de instalação).

Após realizar as devidas instalações, uma nova janela será aberta solicitando informações como título, autor e qual o formato do arquivo de saída (PDF).

Janela aberta no RStudio na criação de um R Markdown.
Janela aberta no RStudio na criação de um R Markdown.

Depois que você clicar em OK, um novo documento R Markdown pré-formatado será criado. Note que os trechos de código em branco referem-se ao Markdown, enquanto os destacados em cinza são linhas de código em R.

Criando seu relatório padrão

Agora que já temos a base do nosso relatório, iremos alimentar ele com nossos dados. Para isso, iremos utilizar a planilha disponibilizada na postagem “Como criar um formulário de campo automatizado no Excel?” e seus dados.

Já temos a planilha de campo, agora precisamos do relatório técnico automatizado.

Inicialmente, iremos converter os dados obtidos para o formato CSV, para facilitar o seu uso no R.

No Excel, esse processo deve ser realizado copiando e colando os dados de campo em uma nova planilha. Em seguida, modifique o nome das colunas de forma a evitar espaços e caracteres especiais. Depois, clique em Arquivo > Salvar Como e escolha o formato CSV.

Planilha da postagem sobre formulários de campo, corrigida.
Planilha da postagem sobre formulários de campo, corrigida.

Agora, vamos modificar o arquivo R Markdown para acrescentar nosso texto e nossos dados. Logo abaixo dos parâmetros de título e autoria, iremos adicionar nosso texto referente aos ensaios de infiltração.

## Laudo de Ensaio de Infiltração

A infiltração da água no solo é uma importante etapa do *ciclo hidrológico*. É por meio deste processo que será determinado a quantidade de **escoamento superficial** que será gerado após um evento de precipitação [(Carvalho e Silva, 2006)](http://www.ufrrj.br/institutos/it/deng/leonardo/downloads/APOSTILA/HIDRO-Cap5-INF.pdf).

Essa característica do solo é influenciada por diferentes fatores, tais como [granulometria](https://2engenheiros.com/2018/03/13/grafico-curva-granulometrica-excel-matlab/), porosidade, compactação, entre outros.

Desta forma, foi realizado um __ensaio de infiltração__ para determinar as características do solo em estudo. O _gráfico_ abaixo correlaciona os dados de Tempo Acumulado (min) com a Velocidade de Infiltração (cm/min).

Note que, além do texto descritivo, utilizamos vários elementos da linguagem Markdown, os quais são explicados abaixo:

  • *itálico*: Utilize um asterisco para converter o texto para itálico (idem para hífen);
  • ** negrito**: Utilize dois asteriscos para converter o texto para negrito (idem para hífen);
  • [Texto com Link](Link): Essa estrutura cria um link a partir do que é coloca entre parenteses no texto dentro dos colchetes;

Agora, após inserir nossa introdução, iremos criar um pedaço de código (“chunk”) contendo R. Para realizar esse procedimento, em um documento R Markdown, devemos iniciar e finalizar o código com três acentos graves (“`).

No código abaixo, iremos carregar a nossa planilha no formato CSV e plotar nosso gráfico Tempo Acumulado (min) com a Velocidade de Infiltração (cm/min).


```{r echo=FALSE, fig.height=4, fig.width=4, fig.align='center'}
arquivo <- "C:/Users/ferna/Desktop/B2E_dados.csv"
dados <- read.csv(file=arquivo, header=TRUE, sep = ";", dec=",")
par(mar = c(4, 4, 0.5, 0.5))
plot(dados$t_min, dados$vi_cm.min.1, xlab = "Tempo (min)", ylab = "Vel. Inf. (cm/min)",
pch = 7, col = "#64b428")
```

Note que logo após o acento grave, colocamos, entre chaves, r e echo=FALSE, ou seja, indicamos que o código a seguir estará escrito em R e que o código não deverá aparecer na impressão (se for para aparecer, echo deverá ser igual à TRUE).

Utilizamos também os parâmetros fig.height, fig.width e fig.align para controlar como esse código irá mostrar o nosso gráfico, ou seja, sua altura, comprimento e alinhamento.

Agora iremos criar uma frase contendo os dados calculados a partir da nossa planilha.

>> Após `r max(dados$t_min)` minutos de ensaio, verificou-se que a velocidade de infiltração é de `r round(mean(dados$vi_cm.s.1[(length(dados$vi_cm.s.1)-5):length(dados$vi_cm.s.1)]),4)` cm/s. Salienta-se que o ensaio somente é válido para o local e cota amostrada, não garantindo a homogeneidade da área de estudo.

Veja que utilizamos pedaços de código R (entre acentos graves) para realizar os nossos cálculos. Usamos a função max() para extrair o tempo total do ensaio e a função mean() para obter a média dos 5 últimos resultados da velocidade de infiltração. Também colocamos duas flechas no inicio para indicar um recuo no documento.

Agora iremos inserir um espaço para a assinatura do técnico e uma linha horizontal para posteriormente colocar as referências citadas.

Profissional Responsável: **Blog 2 Engenheiros**.

------
_CARVALHO, D.F.; SILVA, L.D.B. Capítulo 5: Infiltração. 2006. 21 p._

Agora que finalizamos nosso documento, iremos gerar o arquivo PDF.

No topo da janela do script que acabamos de escrever, há um ícone azul com o texto “Knit”, iremos clicar nele e selecionar “Knit to PDF”.

Botão para conversão de arquivo R Markdown para PDF.
Botão para conversão de arquivo R Markdown para PDF.

Caso no momento de gerar o PDF ocorra o erro “Error in tools::file_path_as_absolute(output_file) : file ‘output/B2E.pdf’ does not exist”, abra as configurações do MikTeX pelo menu Iniciar e modifique o item “Always install missing packages on the fly” para “Yes” (Shawn no StackOverflow).

O seu resultado deverá aparecer em uma nova janela e estará salvo na mesma pasta que você salvou o seu script. A figura abaixo mostra o nosso resultado.

Resultado do nosso laudo para o ensaio de infiltração.
Resultado do nosso laudo para o ensaio de infiltração.

E com isso você tem um arquivo de texto para gerar seus relatórios automaticamente. Lembrando que, como o Markdown é uma linguagem de marcação simples, documentos mais elaborados deverão ser realizados utilizando LaTeX (sendo que o seu equivalente ao R Markdown é o Sweave).

Caso você tenha ficado com alguma dúvida, utilize a seção de comentários para perguntar ela para nós e se você gostou da postagem, compartilhe ela.

Fontes Consultadas:

Søren L Kristiansen. Create PDF reports using R, R Markdown, LaTeX and knitr (on Windows 10). Disponível em <https://medium.com/@sorenlind/create-pdf-reports-using-r-r-markdown-latex-and-knitr-on-windows-10-952b0c48bfa9>. Acesso em 2 nov. 2018.

Sebastian Sauer. Different ways to set figure size in RMarkdown. Disponível em <https://sebastiansauer.github.io/figure_sizing_knitr/>. Acesso 2 nov. 2018.


Clique na figura abaixo e assine nossa lista de emails para receber nosso ebook "Como criar mapas de localização com ArcGIS 10.x".


Author: Fernando BS

Engenheiro Ambiental e de Segurança do Trabalho. Atua nas áreas de recuperação ambiental, geoprocessamento e ciência do solo. Busca soluções utilizando softwares como ArcGIS, R e MATLAB.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *