class: center, middle, titular background-size: contain <img style="border-radius: 50%;" src="img/masapp.jpg" width="250px"/> # Análisis de datos con R y ShinyApps ## **CAPACITACIÓN** #### LINDA CABRERA ORELLANA<br>NÉSTOR MONTAÑO #### Mayo, 2023 --- name: saludo layout: false class: inverse, middle, center # Sobre nosotros .pull-left[ <img style="border-radius: 50%;" src="img/lindacv2.jpg" width="250px"/> ## Linda Cabrera Orellana ### Software Instructor - The Carpentries .fade[Máster en Investigación Matemática<br>Universidad Politécnica de Valencia, ES] ] .pull-right[ <img style="border-radius: 50%;" src="img/nesmo.jpg" width="250px"/> ## Néstor Montaño ### Presidente - Sociedad Ecuatoriana de Estadística .fade[Máster en Estadística<br>Escuela Superior Politécnica del Litoral, ECU] ] --- # Contenido del curso ### Capítulo 1: Introducción a RStudio. R, RStudio, Posit Cloud, Paquetes, Proyectos, Scripts, Asignación, Operadores, Funciones, Ayuda. ### Capítulo 2: Importación y Manipulación de datos en R. Importar datos, Estructuras de datos y Tipos de datos, Transformación de datos, Datos relacionales, Datos ordenados. ### Capítulo 3: Estadística descriptiva. Bases de Estadística, Estadística descriptiva univariada, Estadística descriptiva multivariada. ### Capítulo 4: Análisis exploratorio de datos. Creación de gráficos con `ggplot2`, Gráficos dinámicos con `plotly`. ### Capítulo 5: ShinyApps Conexiones a bases de datos, Instalación de Shiny, Creación de dashboards, Creación de objetos interactivos, Expresiones reactivas, Filtros, Conociendo librerías complementarias, Carga del tablero a ShinyApps. --- # Fechas relevantes ----- - Duración: 40 horas. ----- **Primera Parte** - Inicia: Miércoles, 10 de mayo de 2023. - Finaliza: Jueves, 25 de mayo de 2023. - Horario : De 14h30 a 16h30 **Segunda Parte** - Inicia: Lunes, 29 de mayo de 2023. - Finaliza: Lunes, 19 de junio de 2023. - Horario : De 08h30 a 10h30 ----- - Días clases: 10, 11, 15, 16, 17, 18, 22, 23, 24, 25, 29, 31 de mayo, 2, 5, 7, 9, 12, 14, 16, 19 de junio. - Cada módulo tendrá una prueba de evaluación. ----- --- class: center, middle, titular background-size: contain <img style="border-radius: 50%;" src="img/masapp.jpg" width="250px"/> # Introducción a RStudio ## **CAPÍTULO 1** #### LINDA CABRERA ORELLANA #### Mayo, 2023 --- # Contenido del Capítulo 1 <br> 1. ¿Qué es **R**? y ¿Por qué **R**? 2. **R**, **R**Studio y **Posit**Cloud 3. Entendiendo **RStudio** 5. Trabajando con **paquetes** 6. Creando **proyectos** y **scripts** 7. **Objetos** 8. **Funciones** 9. **Práctica 1** --- class: middle, center, inverse
# ¿Qué es R? y ¿Por qué R? --- # ¿Qué es R? Algunos datos importantes que debes conocer acerca de
: .pull-left[ <br> * Fue desarrollado inicialmente por Robert Gentleman y Ross Ihaka del Departamento de Estadística de la Universidad de Auckland en 1993. * Es un lenguaje de programación de análisis de datos. * Es un entorno de software libre y tiene licencia GNU GLP (Licencia Pública General de GNU). ] .pull-right[ <img src="img/open-source.jpg" width="90%" style="display: block; margin: auto;" /> ] .footnote[[A Brief History R: Past and Future History](https://www.stat.auckland.ac.nz/~ihaka/downloads/Interface98.pdf)] --- # ¿Por qué R? .pull-left[ <br> * Es uno de los lenguajes de programación más utilizados en investigación científica. * Integra multitud de paquetes. * Capacidad gráfica. * GUI disponibles gratuitas para R, como [Rcmdr](https://www.youtube.com/watch?v=MPCjXq5-FJI) y [Rattle](https://www.youtube.com/watch?v=ARGfOHPVERc). * Existen varias comunidades en el mundo para fomentar el avance del conocimiento y el uso del lenguaje de programación en R. ] .pull-right[ <br> <img src="img/community.jpg" width="100%" style="display: block; margin: auto;" /> ] <br> .footnote[ [Top programming languages used in medical research](https://quantifyinghealth.com/programming-languages-popularity-in-research/) || [#30díasdegráficos](https://github.com/sporella/nightingale) || [The R community](https://blog.revolutionanalytics.com/2017/06/r-community.html)] <!-- class: middle .pull-left[ <br> <br> <br> <br> <br> > *"Cuando comienzas a programar, es fácil sentirte realmente frustrado... Es solo una parte natural de la programación, le sucede a todos y se vuelve cada vez menos con el tiempo. No te culpes. Solo tómate un descanso, haz algo divertido y luego regresa e inténtalo de nuevo más tarde."* (Hadley Wickham) ] .pull-right[ <img style="border-radius: 50%;" src="https://irsa.umn.edu/sites/irsa.umn.edu/files/2021-03/Hadley%20Wickham%20Headshot.png" width="350px"/> ] .footnote[[R for Data Science](https://es.r4ds.hadley.nz/)] --> --- class: middle, center, inverse
# R, RStudio y PositCloud --- background-image: url("img/IDE2.png") background-size: contain --- # Instalación de R Es necesario realizar la instalación en el mismo orden que se indica aquí, es decir instalar primero R y luego RStudio. 1. Para descargar R, ingresa a [CRAN](https://cran.rstudio.com/) y elige el sistema operativo de tu computadora. **CRAN** es un acrónimo *Comprehensive R Archive Network* (Red integral de archivos R) para el lenguaje de programación R. 2. Si tu sistema operativo es `Windows`, en la siguiente pantalla que te aparece elige la primera opción que indica `base`. Luego haz clic para iniciar la descarga del instalador de la última versión de R para Windows. 3. Si tu sistema operativo es `macOS`, elige la primera opción que indica `R-4.2.2-arm64.pkg` para iniciar la descarga del instalador. 4. Cuando se haya terminado de descargar el instalador, abre el ejecutable, elige el idioma español y sigue todos los pasos para su instalación dando clic en siguiente. Este proceso de instalación puede durar algunos minutos. 5. Cuando se haya completado la instalación, para confirmar que se hizo correctamente nos dirigimos a las aplicaciones y hacemos clic en `Inicio -> Todas las aplicaciones -> R -> R X64 4.2.0`. [**Video Tutorial para la instalación de R y RStudio**](https://youtu.be/wM6K81wm2jQ) [**Guía completa para la instalación de R y RStudio**](https://lindajzmin-website.netlify.app/blogs/instalacion-r-rstudio/) --- # Instalación de RStudio 1. Con R instalado, ahora procederemos a descargar RStudio desde [https://posit.co/download/rstudio-desktop/](https://posit.co/download/rstudio-desktop/). 2. Hacer clic en el ejecutable que se ha descargado e inicia la instalación siguiendo todos los pasos. Para confirmar que la instalación se hizo correctamente nos dirigimos a las aplicaciones y hacemos clic en `RStudio`. [**Video Tutorial para la instalación de R y RStudio**](https://youtu.be/wM6K81wm2jQ) [**Guía completa para la instalación de R y RStudio**](https://lindajzmin-website.netlify.app/blogs/instalacion-r-rstudio/) <br> # Posit Cloud La plataforma se encuentra en internet y no necesitamos instalar ningún IDE, ni ninguna herramienta como R. Fue liberada en el 2019 por RStudio. 1. Ingresar a [Posit Cloud](https://posit.cloud/). 2. Crear una cuenta en Posit Cloud. --- background-image: url("img/positcloud2.png") background-size: contain --- class: middle, center, inverse
# Entendiendo RStudio --- background-image: url("img/entorno2.png") background-size: contain --- ## Consola * Se puede codificar directamente, pero no guardará el código. * Puedo ingresar operaciones matemáticas directamente: * La función `getwd()` sirve para conocer el directorio en el que me encuentro actualmente <br> ## Pantallas varias * **Archivos:** Le permite ver qué archivos están disponibles en su directorio de trabajo. * **Gráficos:** Mostrará cualquier visualización que produzca su código. * **Paquetes:** Mostrará una lista de todos los paquetes descargados a su computadora y también los que están cargados. * **Ayuda:** Permite buscar temas sobre los que necesita ayuda y también mostrará las respuestas de ayuda. <br> .footnote[[Editing and Executing Code in the RStudio IDE](https://support.posit.co/hc/en-us/articles/200484448-Editing-and-Executing-Code)] --- ## Archivos de comandos * Los scripts son documentos de texto con la extensión de archivo `.R`, por ejemplo `mi_script.R`. * Puedo crear un script: 1. Utilizando la ruta `File -> New File -> R Script`. 2. Utilizando el atajo `Ctrl+Shift+N`. * Aparecerá un `*` en scripts no guardados. <br> ## Entorno del espacio de trabajo * Incluye cualquier objeto definido por el usuario (vectores, matrices, marcos de datos, listas, funciones). --- class: middle, center, inverse
# Trabajando con paquetes --- background-image: url("img/paquetes_rstudio.png") background-size: contain --- class: middle, center, inverse
# ¿Qué es un paquete o una librería? <br> En R, la unidad fundamental del código compartible es el paquete. Un paquete agrupa código, datos, documentación y pruebas y proporciona un método fácil para compartir con otros. Esquema de R: 1) R base, 2) Funciones adicionales con paquetes Debes tener en cuenta que los paquetes: 1) Se instalan en RStudio (solo la primera vez) y, 2) se cargan en RStudio (cada nueva sesión) --- background-image: url("img/instalacion_paquete.gif") background-size: contain --- background-image: url("img/carga_paquete.gif") background-size: contain --- # Instalando Paquetes .pull-left[ ### **Desde CRAN** Repositorio oficial compuesto de un conjunto de servidores web y ftp mantenidos por la comunidad R a lo largo de todo el mundo. 1. **Por la interfaz gráfica** * Desde la barra de Herramientas, escogemos la opción `Tools -> Install packages...` * Desde el panel de *pantallas varias* en la pestaña de `Packages` 2. **Con código.** ```r install.packages("dplyr") ``` ] .pull-right[ ### **Desde GitHub** ```r install.packages("devtools") devtools::install_github("hadley/babynames") ``` ### **Desde Bioconductor** Se trata de un repositorio específico para bioinformática. Puede revisar más información en [https://www.bioconductor.org/](https://www.bioconductor.org/) ] .footnote[ftp: File Transfer Protocol (la traducción de significa Protocolo de transferencia de archivos) en lugar del HTTP. El servidor FTP sirve para guardar archivos, imágenes e información importante y valiosa.] --- # Cargando Paquetes Una vez que el paquete se descarga en su computadora, puede acceder a las funciones y recursos proporcionados mediante código: ```r # carga el paquete para usar en la sesión actual de R library(tidyverse) # usar una función particular dentro de un paquete sin cargar el paquete dplyr::filter() ``` También puede cargar los paquetes desde el panel de *pantallas varias* en la pestaña de `Packages`. RStudio compiló una guía con algunos de los mejores paquetes para cargar, manipular, visualizar, analizar e informar datos, que la puedes encontrar en [https://support.rstudio.com/hc/en-us/articles/201057987-Quick-list-of-useful-R-packages](https://support.rstudio.com/hc/en-us/articles/201057987-Quick-list-of-useful-R-packages). --- background-image: url("img/paquetes2.png") background-size: contain --- class: middle, center, inverse
# Creando proyectos y scripts --- # Proyectos .pull-left[ <img style="border-radius: 20%;" src="img/folders.png" width="600px"> ] .pull-right[ * Carpetas que contienen los scripts, archivos desde donde se importan los datos y los archivos de proyecto como el .RData (contiene los objetos con los que se está trabajando) y .Rhistory (contiene el historial de comandos). * Cada vez que se abre un proyecto existente, se abren las ventanas que se encontraban activas en ese proyecto. * Para crear un proyecto seguimos los siguientes pasos: `Project -> New Project... -> New Directory -> Empty Project -> "Poner nombre al proyecto y elegir ruta" -> Create Project` ] --- background-image: url("img/proyectos2.png") background-size: contain --- # Scripts <img style="border-radius: 20%;" src="img/bakers_2.png" width="500px"> * Para ejecutar código: 1. La línea de código fuente donde reside el cursor, presione `Ctrl+Enter` (o use el botón `Run`). 2. Seleccione varias líneas a la vez y presione `Ctrl+Enter`. 3. Todo el documento, presione `Ctrl+Shift+Enter` (o use el botón `Source`). * Puede comentar y descomentar mediante el elemento de menú `Código -> Comentar/Descommentar líneas` o presiones `Ctrl+Shift+C` o escribiendo el signo numeral. * Para crear secciones utiliza `Ctrl+Shift+R`. --- class: middle, center, inverse
# Generalidades --- # Operadores aritméticos .pull-left[ Lo más simple que podrías hacer con R es aritmética: ```r 100 + 5 ## [1] 105 ``` R mostrará la respuesta, precedido de un `[1]`. Si escribes un comando incompleto, R esperará a que lo completes. Cada vez que presiones `Enter` y R te muestre un `+` en lugar de `>`, significa que está esperando que completes el comando. Si deseas cancelar un comando, simplemente presiona `Esc` y RStudio te devolverá el `>` **prompt**. ] .pull-right[ Cuando usas R como calculadora, el orden de las operaciones es el mismo que ha aprendido en la escuela. De mayor a menor precedencia: - Paréntesis: `(`, `)` - Exponente: `^` o `**` - División: `/` - Multiplicación: `*` - Suma: `+` - Resta: `-` ] --- # Operadores aritméticos .pull-left[ ```r 3 + 20 * 2 ## [1] 43 ``` Usa paréntesis para agrupar las operaciones a fin de forzar el orden de la evaluación o para aclarar lo que se desea hacer. ```r (3 + 20) * 2 ## [1] 46 ``` Esto puede ser difícil de manejar cuando no es necesario, pero aclara tus intenciones. ```r (3 + (20 * (2 ^ 2))) # difícil de leer 3 + 20 * 2 ^ 2 # claro, si recuerdas las reglas 3 + 20 * (2 ^ 2) # si olvidas algunas reglas, esto podría ayudar ``` ] .pull-right[ Los números pequeños o grandes tienen una notación científica: ```r 3/10000 ## [1] 3e-04 ``` Es la abreviatura de "multiplicado por `10 ^ XX`". Entonces `2e-4` es la abreviatura de `2 * 10^(-4)`. Tú también puedes escribir números en notación científica: ```r 5e3 ## [1] 5000 5e-3 ## [1] 0.005 ``` ] --- # Operadores relacionales .pull-left[ Son usados para hacer comparaciones y siempre devuelven como resultado `TRUE` o `FALSE`. | Operador | Comparación | |:--------:|:-----------------:| | `\(<\)` | Menor que | | `\(\leq\)` | Menor o igual que | | `\(>\)` | Mayor que | | `\(\geq\)` | Mayor o igual que | | `\(==\)` | Exactamente igual que | | `\(\neq\)` | No es igual que | | %in% | Incluye | ```r 10 >= 4 ## [1] TRUE ``` ] .pull-right[ ```r 10 == 4 ## [1] FALSE ``` Una advertencia sobre la comparación de números: nunca debes usar `==` para comparar dos números a menos que sean enteros. Las computadoras sólo pueden representar números decimales con un cierto grado de precisión, así que dos números que parecen iguales cuando se muestran por R, pueden tener diferentes representaciones subyacentes y por lo tanto ser diferentes por un pequeño margen de error (llamado tolerancia numérica de la máquina). En su lugar, debes usar la función `all.equal`. Lectura adicional: [http://floating-point-gui.de/](http://floating-point-gui.de/) ] --- background-image: url(https://media.tenor.com/sb3m65uL0YsAAAAC/the-last-of-us-joel.gif) background-size: contain --- # Operadores lógicos .pull-left[ Son usados para operaciones de **álgebra Booleana**, es decir, para describir relaciones lógicas, expresadas como `TRUE` o `FALSO`. Supongamos que `\(x\)` y `\(y\)` son **proposiciones**, es decir, enunciados lógicos que se les puede asignar un valor de verdad (1) o falsedad (0), entonces: | Operador | Nombre | Resultado | |:--------:|:-----------:|:----------------------:| | `\(x\)` | `\(y\)` | disyunción (O) | Es `TRUE` cuando al menos una de las dos `\(x\)` o `\(y\)` es verdadera, y `FALSE` en caso contrario. | | `\(x\)` & `\(y\)` | conjunción (Y) | Es `TRUE` cuando `\(x\)` y `\(y\)` son verdaderas, y `FALSE` en cualquier otro caso. | | ! `\(x\)` | negación (NO) | Es `TRUE` si `\(x\)` es `FALSE` y es `FALSE` si `\(x\)` es `TRUE`. | ] -- .pull-right[ **Ejercicio 1.1.** Considerando el valor lógico de las proposiciones `\(a\)`, `\(b\)` y `\(c\)`: - `\(a\)` = Ellie es inmune - `\(b\)` = Las Luciérnagas son un grupo pacífico - `\(c\)` = El Cordyceps es un hongo Indique si los siguientes enunciados son falsos o verdaderos: 1. `\(a\)` & `\(c\)` 2. `\(a\)` & `\(b\)` & `\(c\)` 3. `\(a\)` | `\(b\)` | `\(c\)` 4. ! `\(b\)` 5. ( `\(a\)` | `\(b\)` ) & ( `\(c\)` | `\(b\)` ) ] --- # Asignación - Creando objetos .pull-left[ Un concepto básico en la programación (estadística) se llama **variable**. Una variable le permite almacenar un valor o un objeto en R usando `<-` (`Alt+-`). Luego puede usar el nombre de esta variable para acceder fácilmente al valor o al objeto que está almacenado dentro de esta variable. Por ejemplo, puede asignar un valor de 6 a una variable `mi_var`: ```r ## crear la variable mi_var mi_var <- 6 ## imprimir el valor guardado en la variable mi_var ## [1] 6 ``` ] .pull-right[ Observe que el objeto creado se almacenará en la pestaña `Environment` en el Panel _workspace environment_. La variable `mi_var` se puede usar en lugar de un número en cualquier cálculo que espere un número: ```r sqrt(mi_var) ## [1] 2.44949 ``` Ten cuidado, porque las variables pueden reasignarse: ```r mi_var <- 12 ``` `mi_var` tenía el valor 6 y ahora tiene el valor 12. ] --- # Asignación - Creando objetos .pull-left[ También, los valores de asignación pueden contener la variable asignada: ```r mi_var <- mi_var + 3 y <- mi_var / 5 ``` Los _nombres de las variables_ pueden contener letras, números, guiones bajos y puntos. No pueden comenzar con un número ni contener espacios en absoluto. Es aconsejable que los nombres sean descriptivos. Diferentes personas usan diferentes convenciones para nombres largos de variables, estos incluyen - puntos.entre.palabras - guiones_bajos_entre_palabras - MayúsculasMinúsculasParaSepararPalabras ] .pull-right[ También es posible utilizar el operador `=` para la asignación: ```r mi_var = 20*3 ``` Esta forma es menos común entre los usuarios R. **Ejercicio 1.2.** De los siguientes ejemplos, ¿Cuáles son nombres de variables válidas en R? ```r min_height max.height _age .mass MaxLength min-length 2widths celsius2kelvin ``` ] --- background-image: url(https://www.rebanando.com/uploads/externalMedia/dc/8e/b4/c6/jnu3dlr.gif) background-size: contain --- # Funciones <br> <img src="img/funcion3.png" width="90%" style="display: block; margin: auto;" /> <br> ** _"Una función es una regla de correspondencia entre dos conjuntos de tal manera que a cada elemento del primer conjunto le corresponde uno y sólo un elemento del segundo conjunto."_ ** --- # Funciones .pull-left[ R tiene una gran colección de funciones integradas que se usan así: <img src="img/funcion.png" width="90%" style="display: block; margin: auto;" /> Por ejemplo, para hacer secuencias de números podemos utilizar la función `seq()` del paquete base `{base}`. ```r # generar secuencias de números del 1 al 10 seq(from=1, to=10) ## [1] 1 2 3 4 5 6 7 8 9 10 ``` ] .pull-right[ ```r sqrt(81) # raíz cuadrada ## [1] 9 log(100, 10) # logaritmo base 10 de 100, también log10(100) ## [1] 2 exp(10) # euler elevado a la 10 ## [1] 22026.47 sin(pi/2) # seno de pi medio ## [1] 1 abs(-3.6) # valor absoluto ## [1] 3.6 round(7.12) # redondear ## [1] 7 ``` ] --- class: middle, center, inverse
# Obteniendo ayuda --- .pull-left[ # Desde la consola * `help.start()` proporciona enlaces de ayuda general. * `help.search()` busca en el sistema de ayuda la documentación que coincida con un carácter dado debe introducir cadena de texto. * `help()` proporciona detalles para una función específica instalada en tu pc * `RSiteSearch()` busca la frase clave en manuales de ayuda y listas de correo archivadas en el sitio web de [R Project](http://search.r-project.org/) ```r RSiteSearch("string") ``` ] .pull-right[ # Desde la web *
[oogle](https://www.google.com/) *
StackOverflow en [http://stackoverflow.com/](http://stackoverfl ow.com/questions/tagged/r) *
Cross Validated en [http://stats.stackexchange.com/](http://stats.stackexchange.com/questions/tagged/r) * R-seek en [http://rseek.org/](http://rseek.org/) * R-bloggers en [http://www.r-bloggers.com/](http://www.r-bloggers.com/) ] --- background-color: var(--azul-claro) class: middle, center, inverse
## PRÁCTICA 1 --- #
Práctica: ¡10 minutos! 1. Crea un proyecto en tu computadora denominado "Curso_R". 2. En el nuevo proyecto crea un script denominado "practica1". 3. En el script: (No olvides comentar el código) 1. Crea una variable, asígnale el valor de 20. 2. Crea otra variable, asígnale el valor de 3. 3. Crea otra variable que contenga la resta de la primera y segunda variable que creaste y elévala al cuadrado. 4. Imprime el resultado. 4. Instala los paquetes: `tidyverse`, `openxlsx`, `readxl`, `lubridate`, `magrittr`, `datos`. --- class: middle, center, inverse <br> <br> ## Introducción a RStudio ## **CAPÍTULO 1** <br> <br> .center[ ### [@MasappEC
](https://www.facebook.com/MasappEC/) ### [@Masappdata
](https://twitter.com/Masappdata) ]