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.
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).
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.
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”.
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.
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.
Parabéns pelo post!!!