Reportería dinámica y visualización con R

Cristian Benalcázar
11-10-2017

rusersgroup.com

Contenido

  1. Data products: Introducción y tipos.
  2. Investigación reproducible con Markdown.
  3. Limpieza, procesamiento, análisis y reportería automática (Windows y Linux).
  4. Aplicaciones web con shiny, shinydashboard y flexdashboard.
  5. RStudio Server y Shiny Server.
  6. Reactivos y condicionales.
  7. Integración con bases de datos Postgres y MySQL.


    Bibliografía recomendada: Developing Data Products in R, Brian Caffo and Sean Kross

1. Data products:

Introducción y tipos.

Introducción

Productos de datos son el resultado de un análisis de datos.

  • Tabla
  • Gráfico
  • Informe
  • Presentación
  • Sitios web de análisis interactivo

Introducción

Ejemplo:

Un análisis de datos podría generar algoritmo que calcule un score para un grupo de posibles clientes.

Producto de datos:

  • Tabla con resultado
  • Reporte que muestre este resultado y su forma de cálculo
  • Aplicación que incorpore ese algoritmo en un sitio web para que los usuarios puedan introducir datos de nuevos clientes y obtengan su score.

Tipos

Estáticos

Productos que no permiten modificar tipo de visualización

  • Informe
  • Presentación
  • Tabla

Dinámicos

Productos que permiten modificar el tipo de visualización, además de cambiar el tipo de gráfico, permiten añadir nuevas variables, nuevos registros, realizar filtros, actualizar y consolidar los resultados, etc.

  • Aplicaciones de control, consulta, captura y visualización de información.

¿Por qué hacerlo con R?

Potencial y ventajas de R se incorporan directamente a nuestros productos de datos.

Facilidad, dentro de lo necesario para desarrollar productos de datos se incluye HTML, Javascript, D3, Web Services, etc. etc.

Con las herramientas que estudiaremos podemos generar productos finales o podemos usarlas como herramientas prototipo antes de construir un desarrollo más grande en dependencia de nuestras necesidades.

Ejemplos

Exportar tabla en excel - Formato personalizado

library(xlsx)
exportar <- function(datos, archivo){        
  wb <- createWorkbook(type="xlsx")
  # Estilos de celdas
  # Estilos de titulos y subtitulos
  titulo <- CellStyle(wb)+ Font(wb,  heightInPoints=16, isBold=TRUE)
  subtitulo <- CellStyle(wb) + Font(wb,  heightInPoints=12,
                                          isItalic=TRUE, isBold=FALSE)
  # Estilo de tablas
  filas <- CellStyle(wb) + Font(wb, isBold=TRUE)
  columnas <- CellStyle(wb) + Font(wb, isBold=TRUE) +
    Alignment(vertical="VERTICAL_CENTER",wrapText=TRUE, horizontal="ALIGN_CENTER") +
    Border(color="black", position=c("TOP", "BOTTOM"), 
           pen=c("BORDER_THICK", "BORDER_THICK"))+Fill(foregroundColor = "lightblue", pattern = "SOLID_FOREGROUND")
  # Crear una hoja
  sheet <- createSheet(wb, sheetName = "Información - R Users Group - Ecuador")
  # Funcion linea (agregar texto)
  linea<-function(sheet, rowIndex, title, titleStyle){
    rows <- createRow(sheet, rowIndex=rowIndex)
    sheetTitle <- createCell(rows, colIndex=1)
    setCellValue(sheetTitle[[1,1]], title)
    setCellStyle(sheetTitle[[1,1]], titleStyle)
  }
  # Agregamos titulos,  subtitulos, etc.
  linea(sheet, rowIndex=8, 
                title=paste("Fecha:", format(Sys.Date(), format="%Y/%m/%d")),
                titleStyle = subtitulo)
  linea(sheet, rowIndex=9, 
                title="Elaborado por: R Users Group - Ecuador",
                titleStyle = subtitulo)
  linea(sheet, rowIndex=11, 
                paste("Información de prueba"),
                titleStyle = titulo)
  # Tablas
  addDataFrame(datos,
               sheet, startRow=13, startColumn=1,
               colnamesStyle = columnas,
               rownamesStyle = filas,
               row.names = F)
  # Ancho de columnas
  setColumnWidth(sheet, colIndex=c(1:ncol(datos)), colWidth=15)
  # Imagen    Cambia la ruta por la que de tu imagen
  addPicture("C:/final5x5.png", sheet, scale=0.75, startRow = 1, startColumn = 1)
  # Guardar
  saveWorkbook(wb, archivo)
}
exportar(mtcars, "R Users Group - Ecuador - mtcars.xlsx")

Con lo cual vamos a obtener un archivo excel como este:

R Users Group - Ecuador

Grádicos dinámicos

R Presenter

Presentación actual

Slidify

Presentación BI - R Users Group - Ecuador

rusersgroup BI

Shinyapp

Dashboard reactivos - R Users Group - Ecuador

app demo reactivos rusersgroup

Githubpages

Web oficial - R Users Group - Ecuador

rusersgroup.com

2. Investigación reproducible con Markdown.

Investigación reproducible

Análisis completamente replicable -captura de datos, limpieza, procesamiento y resultados-.

Debe incluir descripción, objetivos, etc.

rpubs.com

¿Qué es Markdown?

Markdown es un lenguaje de marcado ligero parecido al que se emplea en muchas wikis y basado originalmente en convenciones existentes en el marcado de los correos electronicos. Emplea texto plano, procurando que sea legible pero consiguiendo que se convierta en XHTML correctamente formateado.

This browser does not support PDFs. Please download the PDF to view it: Download PDF.

Sintaxis Markdown

Taller 1

Desarrollar un informe en rmarkdown

Desarrollar una presentación en rpresenter o slidify

3. Limpieza, procesamiento, análisis y reportería automática (Windows y Linux).

Tareas automáticas

Ejecución programada de scripts R.

Rscript.exe --vanilla --save script.r

Windows - batch y tareas automáticas

"C:\Program Files\R\R-3.4.1\bin\Rscript.exe"     --vanilla --save "C:\automaticos\script.r"

Linux - crontab

30 20 * * * R CMD BATCH /automaticos/script.r

4. Aplicaciones web con shiny, shinydashboard y flexdashboard.

¿Qué es Shiny?

Shiny es una paquete de R con el cual podemos crear aplicaciones web interactivas (apps) que permiten a los usuarios interactuar con sus datos sin tener que manipular el código.

No hace falta conocimiento de HTML o JavaScript, solo conocer R.

install.packages("shiny")
library(shiny)

La aplicación tiene 3 componentes:

UI : Interfaz de usuario, controla el diseño, entradas y salidas de la aplicación.
SERVER : Fuciones, cálculos, resultados, etc., contiene las instrucciones necesarias para el funcionamiento de la aplicación.
GLOBAL : Data - puede omitirse y colocarse antes del resto de componentes.

Ejemplos

Comprensión y práctica

runExample("01_hello")

“01_hello”
“02_text”
“03_reactivity”
“04_mpg”
“05_sliders”
“06_tabsets”
“07_widgets”
“08_html”
“09_upload”
“10_download”
“11_timer”

Taller 2

Desarrollar un aplicación en shiny

Shinydashboard

Flexdashboard