5  Comunicación de Resultados: Reportes Parametrizados

Análisis Exploratorio de Datos | Licenciatura en Estadística | FCEyE | UNR

5.1 Datos de Cultivos

  • En esta clase trabajaremos con el conjunto de datos disponible en la planilla de Excel cultivos.xlsx.

  • Los datos fueron extraídos del sitio web https://datosestimaciones.magyp.gob.ar/, dependiente del Ministerio de Agricultura, Ganadería y Pesca de Argentina.

  • Se trata de una serie histórica de indicadores agrícolas desagregada a nivel departamental y provincial, para diferentes tipos de cultivos existentes en Argentina (soja, trigo, cebada, maíz, sorgo, etc.) desde 1969 hasta 2021.

  • Los indicadores presentes en la base son 4:

    • sup_sembrada: superficie sembrada (en hectáreas) del cultivo, para un departamento y campaña agrícola en particular.
    • sup_cosechada: superficie cosechada (en hectáreas), debe ser menor o igual a la superficie sembrada.
    • prod: producción (en toneladas) del cultivo alcanzada en ese departamento y campaña en particular.
    • rend: rendimiento (en kg. por hectárea), se calcula como la razón entre producción y superficie cosechada, multiplicada por mil.
  • Importamos la base, indicando que los valores perdidos están representados por un guión, y vemos sus primeras 10 filas:

library(readxl)
cultivos <- read_excel("../data/unidad02/cultivos.xlsx", na = "-")
head(cultivos, 10)
# A tibble: 10 × 8
   prov         dpto      cultivo campaña sup_sembrada sup_cosechada  prod  rend
   <chr>        <chr>     <chr>   <chr>          <dbl>         <dbl> <dbl> <dbl>
 1 BUENOS AIRES 25 DE MA… Ajo     1969/70            3             3    10  3333
 2 BUENOS AIRES 25 DE MA… Ajo     1970/71            1             1     3  3000
 3 BUENOS AIRES 25 DE MA… Alpiste 1969/70          500           400   240   600
 4 BUENOS AIRES 25 DE MA… Alpiste 1970/71          150           130    78   600
 5 BUENOS AIRES 25 DE MA… Alpiste 1975/76          350           350   315   900
 6 BUENOS AIRES 25 DE MA… Alpiste 1976/77          250           200   240  1200
 7 BUENOS AIRES 25 DE MA… Alpiste 1977/78          150           150   180  1200
 8 BUENOS AIRES 25 DE MA… Alpiste 1978/79          100           100   130  1300
 9 BUENOS AIRES 25 DE MA… Alpiste 1979/80          100           100   120  1200
10 BUENOS AIRES 25 DE MA… Alpiste 1980/81          100           100   120  1200


  • Supongamos que nos encargan la tarea de generar un informe para cada cultivo presente en la base, analizando cómo evolucionó su producción a nivel nacional mediante un gráfico de línea, y comparando las campañas 2018/19 y 2019/20 entre provincias.

  • Por ejemplo, para el centeno obtenemos los siguientes resultados:

Producción de Centeno según provincia
Provincia 2018/19 2019/20 % Var.
BUENOS AIRES 22.688 19.863 -12,45
CORDOBA 24.648 183.144 643,04
LA PAMPA 28.140 5.630 -79,99
SAN LUIS 11.090 12.065 8,79
SANTA FE 0 499 Inf
TOTAL ARGENTINA 86.566 221.201 155,53
  • El template para generar un reporte en HTML que incluye el gráfico y la tabla mostrados arriba se proporciona en el archivo 04_template.Rmd.

5.2 Reportes Parametrizados

  • Los reportes parametrizados resultan útiles cuando tenemos que generar muchos documentos similares entre sí, con un formato en común, donde únicamente cambian algunas variables puntuales.

  • La base de cultivos que estamos analizando es buen ejemplo de esta situación, ya que necesitamos generar un reporte individual para cada uno de los 38 cultivos disponibles.

  • Existen muchas maneras de resolver esta tarea, entre ellas:

    • Generar un archivo Rmd para cada cultivo, copiando y pegando 38 veces el mismo código en 38 archivos diferentes.
    • Generar un único archivo Rmd e ir cambiando los datos cada vez que genero un nuevo reporte.
    • Generar un único archivo Rmd, parametrizarlo y dejar que R haga el trabajo pesado.
  • Evidentemente vamos a preferir la última opción, pero… ¿cómo se logra esto?

  • Una buena estrategia es empezar generando un archivo .Rmd para un único cultivo (el template). Una vez que estamos conformes con el resultado, es fácil ver que, para generar el reporte de los restantes cultivos, lo único que hay que hacer es proveer otro nombre a la hora de filtrar la base.

  • Por lo tanto, podemos pensar al nombre del cultivo como un parámetro que tomará diferentes valores de acuerdo al archivo que deseemos generar. Podemos llamar a este parámetro nombre_cultivo y utilizarlo como valor de entrada del archivo Rmd a generar.

  • Dentro del template, la presencia del parámetro nombre_cultivo se indica en el encabezado del documento, de la siguiente manera:

---
title: Título
author: Nombre
date: Fecha
output: html_document
params: 
 nombre_cultivo: Centeno
---
  • Luego, en el cuerpo del .Rmd hacemos referencia a este valor con params$nombre_cultivo. Por ejemplo:
centeno <- cultivos %>% filter(cultivo == params$nombre_cultivo)
  • Para evitar tener que cambiar a mano el valor asignado a nombre_cultivo, creamos otro script de R desde el cual mandamos a generar todos los reportes mediante un loop.

  • La función que debemos emplear dentro del loop es render(), perteneciente al paquete rmarkdown, la cual tiene el mismo efecto que apretar el botón Knit en archivos Rmd o el botón Render para archivos qmd.

  • Al momento de emplear esta función, algunos de los argumentos que debemos definir son:

    • ruta y nombre del archivo donde se encuentra alojado el template
    • ruta y nombre del archivo donde deseamos guardar el resultado
    • formato de salida (HTML, pdf, etc.)
    • lista de parámetros a emplear
  • Ejemplo:

library(rmarkdown)

render(
 input = "MiTemplate.Rmd",
 output_file = "MiReporte.html",
 output_format = "html_document",
 params = list(Parametro1 = valor1, Parametro2 = valor2)
 )
Trabajo en Equipo

Crear un loop en R que genere un reporte para cada posible cultivo, empleando el template provisto. El nombre del archivo generado debe coincidir con el del cultivo correspondiente (ejemplo: girasol.html, mandarina.html, etc.). El formato de salida puede ser HTML, PDF o Word.