class: center, middle, inverse, title-slide # Intro a la programación en R ## Escuela de Invierno - Julio 2020
Gabriela Mathieu ###
Creative Commons Attribution 4.0 International License
--- class: hide-logo # Características del curso .left-column[
<br>
<br>
<br>
<br>
<br>
] .right-column[ Espacio "presencial": <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >16 horas</span> de clases teóricas/prácticas <br> <a href="https://webasignatura.ucu.edu.uy/course/view.php?id=6789">Espacio virtual</a> <br> Participar durante la clase a través del <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >chat</span> de zoom o <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >pedir la palabra</span>. <br><br> <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Examen</span> opcional <br><br> <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Dedicación:</span> durante el curso y después ... es la .red[clave] <br> Comunicación: <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >foro y mail</span> ] --- # Objetivos del curso - Introducción al lenguaje <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >R</span> mediante <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >RStudio</span> - Manejar un gran conjunto de <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >funciones: básicas y más avanzadas</span> - Generar <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >autonomía</span> para usar R y <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >seguir aprendiendo</span> después del curso - Aprender a programar en R a través de la <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" > lógica tidyverse</span> para lograr rápidamente: - Trabajar con <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >datos reales</span> e interesantes. - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Procesar</span> y transformar los datos. - Crea <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >visualizaciones</span> atractivas e informativas. --- class: hide-logo # ¿Qué haremos hoy? - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >¿Qué es R?</span> <br> -- - Usar R como <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >calculadora</span> <br> -- - Conceptos básicos: <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >objetos y clase de objetos</span> <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Vectores</span>: numéricos, lógicos y de caracteres <br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Funciones</span> y <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >operadores</span> <br> -- - Marco de datos (<span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >data frame</span>) <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Importar</span> un archivo csv <br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Explorar</span> un conjunto de datos (data frame) <br><br> -- - Extensiones a R base: <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >paquetes</span> <br> -- - Paquete <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >tidyverse</span> <br><br> -- - ¿Qué es un <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >script</span>? <br> -- - Alternaremos entre <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >ejemplos</span> y <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >ejercicios</span> --- class: hide-logo # ¿Qué es
? .left-column[
<br>
<br>
<br>
<br>
<br>
] .rigth-column[ <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Programa estadístico</span>: análisis <br><br> <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Lenguaje</span> de programación: sintaxis <br><br> Software <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >gratuito</span>, se desacarga desde [CRAN](http://www.r-project.org). <br><br> Software <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >libre</span>: licencia [GNU](https://es.wikipedia.org/wiki/GNU_General_Public_License). Libertad de uso, modificación y distribución. <br> <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Comunidad</span> mundial: lo usa y mejora. Casi 20.000 paquetes en [CRAN]((https://cran.r-project.org/web/packages/)) y [github](https://github.com/) <br> Comunidad en Uruguay: [meetup R-Ladies](https://www.meetup.com/es-ES/rladies-montevideo/) y [meetup GURU](https://www.meetup.com/es-ES/GURU-mvd/) ] --- # ¿Quiénes usan/usamos R? <!-- [Visualizador](https://benubah.github.io/r-community-explorer/rugs-cluster-map.html) RUGs y R-Ladies --> <iframe src="https://benubah.github.io/r-community-explorer/rugs-cluster-map.html" width="1200" height="520" frameBorder="0"></iframe> <!-- https://rpubs.com/anish20/StackOverflowDeveloperSurveyAnalysis --> --- class: inverse, center, middle # Intro R --- class: hide-logo # Curva de aprendizaje Al inicio suele ser empinada <center> <img src="https://media.giphy.com/media/xT5LMNsvvJzIB77S0g/source.gif"/> </center> <!-- ![Alt Text](https://media.giphy.com/media/xT5LMNsvvJzIB77S0g/source.gif) --> --- class: hide-logo # ... <center> <img src="https://media.giphy.com/media/3o6MbtpwBH9tlVMg2k/source.gif"/> </center> --- class: hide-logo # Ayuda El curso busca guiarlos por un camino menos empinado <center> <img src="https://media.giphy.com/media/l2Jee8WOulPSBZwaI/source.gif"/> </center> --- class: hide-logo #
Abrimos RStudio ![](img/terminal.gif) --- class: hide-logo # ¿Cómo interactuamos con R? .pull-left[ - Al abrir RStudio vemos el panel llamado "Console" que es la <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >consola</span> de R. - R inicia con un <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >mensaje</span> de apertura que indica entre otras cosas, la versión. ] .pull-right[ - Luego del mensaje de apertura, el 'prompt', <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >></span>, indica que R está listo. ![](img/console.png) <!-- ![](img/coding.gif) --> ] --- class: hide-logo # ¿Cómo interactuamos con R? - Es un lenguaje de programación: escribimos <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >código</span> en la consola para darle órdenes a R. - Las <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >órdenes</span> elementales de R consisten en expresiones o asignaciones. -- - Una <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >expresión</span>, se evalúa, se imprime el resultado y su valor se pierde. ```r *2 + 3 ``` ``` [1] 5 ``` -- --- class: hide-logo # ¿Cómo interactuamos con R? - Una <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >asignación</span>, crea un objeto y no se imprime el resultado. <code class ='r hljs remark-code'>x <span style='background-color:#ffff7f'><-</span> 2 + 3</code> -- - Una asignación se hace utilizando el símbolo:
<br> -- - Otros programas estadísticos muestran directamente los resultados, R los guarda en un <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >objeto</span>. <br> -- - Ejecuto el nombre del objeto para imprimir/mostrar el resultado ```r x ``` ``` [1] 5 ``` --- class: hide-logo # Operadores aritméticos .pull-left[ - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Suma</span> <code class ='r hljs remark-code'>18 <span style='background-color:#ffff7f'>+</span> 9</code> ``` [1] 27 ``` - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Resta</span> <code class ='r hljs remark-code'>18 <span style='background-color:#ffff7f'>-</span> 9</code> ``` [1] 9 ``` ] .pull-right[ - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Multiplicación</span> <code class ='r hljs remark-code'>18 <span style='background-color:#ffff7f'>*</span> 9</code> ``` [1] 162 ``` - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >División</span> <code class ='r hljs remark-code'>18 <span style='background-color:#ffff7f'>/</span> 9</code> ``` [1] 2 ``` ] --- class: hide-logo # Ejercicio (3') .pull-left[ - ¿Cuánto gasté en el super? - ¿Cuánto gasté en pesos uruguayos? - Escribe la cuenta en la consola de R ] <!-- <img src="https://media.giphy.com/media/l2JefdrXcqBgL3rqM/giphy-downsized.gif/> --> .pull-right[ <img src="img/ticket.png" width="50%" /> <!-- ![](img/ticket.png) --> ] --- class: hide-logo # Calculadora - Además de los operadores aritméticos, trae <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >funciones matemáticas</span> ```r # valor absoluto abs(-1) ``` ``` [1] 1 ``` -- -- ```r # exponencial exp(0) ``` ``` [1] 1 ``` -- ```r # raíz cuadrada sqrt(9) ``` ``` [1] 3 ``` --- class: hide-logo # Funciones - Una función es un conjunto de <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >instrucciones</span> que operan sobre unos <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >argumentos</span> y producen un <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >resultado</span>. <br><br> -- - Una función esconde líneas de código que permite reutilizarlo una y otra vez. <br><br> -- - Las funciones tienen <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >nombres</span> descriptivos -en inglés- y se acompañan de <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >paréntesis curvos</span>. Por ejemplo, <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >sqrt()</span> es la abreviación de square root (raíz cuadrada) <br><br> -- - Dentro de los paréntesis se definen los valores de sus argumentos: <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >sqrt(9)</span> <br><br> -- - La mayoría tiene al menos un argumento obligatorio y el resto con valores por defecto. Usa la <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >ayuda</span> de R para saber qué hace una función: ```r ?sqrt help("sqrt") ``` --- class: inverse, center, middle # RStudio --- class: hide-logo # [RStudio](https://www.rstudio.com/) <!-- (IDE -integrated development environment-) entorno de desarrollo integrado --> ![](https://github.com/calcita/Curso-rECH/blob/master/images/RStudio_logo_flat.png) --- class: hide-logo # Ventanas de RStudio <!-- ![](img/panels2.png) --> <img src="img/panels2.png" width="120%" /> <svg style="height:0.8em;top:.04em;position:relative;fill:#43a2ca;" viewBox="0 0 512 512"><path d="M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z"/></svg> [Cheatsheet](https://resources.rstudio.com/the-essentials-of-data-science/rstudio-ide) --- # Script ![](img/newscript.gif) --- # Script - Un archivo donde se <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >escribe</span> la sintaxis (el código) y luego se <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >envía</span> a la consola. <br><br> -- - Un script permite <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >reproducir</span> nuestro análisis o que otra persona lo haga. <br><br> -- - Tendrá una extensión <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >.R</span> y al hacer doble click sobre el archivo se abre RStudio. <br><br> -- - Es clave <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >comentar</span> el código, los comentarios deben ir precedidos por <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >#</span>. <br><br> -- - Los comentarios se verán de un color diferente al código, incluso cuando se comenta parte de un código. <br><br> -- - Un comentario se envía a la consola pero <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >no se ejecuta</span> nada. --- # Autocompleta código La ventana de script <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >colorea y autocompleta</span> código. Muestra el <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >help</span> de la función. ![](img/colorea.gif) --- # Comentarios ![](img/comentarios.gif) --- class: hide-logo # Ejecutar código - Una sola línea: colocar el <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >cursor sobre esa línea</span> y ejecutar <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Ctrl + ENTER</span>. ![](img/sendcode1.gif) --- class: hide-logo # Ejecutar código - Varias líneas de código: <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >seleccionarlas todas</span> y ejecutar <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Ctrl + ENTER</span>. ![](img/sendcode2.gif) --- # Atajos de teclado <center> <img src="https://media.giphy.com/media/vpURqIvpuDguQ/source.gif"/> </center> --- class: hide-logo # Flecha: atajo de teclado en Linux/Windows (teclado en español) ![](img/linux_flecha.png) --- class: hide-logo # Flecha: atajo de teclado en Mac (teclado en español) ![](img/mac_flecha.png) --- # Atajos de teclado <img src="img/teclas.png" width="544" height="100%" style="display: block; margin: auto;" /> --- class: inverse, center, middle # R 'base' --- class: hide-logo # Objetos - R es un programa <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >'orientado a objetos'</span>: variables, datos, funciones, resultados, etc., se guardan en la memoria RAM en forma de objetos con un nombre específico sin usar archivos temporales. <br><br> -- - Cada <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >clase de objeto</span> tiene diferentes atributos que determinan la forma en que trabajan dentro de R, es decir, define cuáles funciones se le pueden aplicar. <br><br> -- - Estos objetos se pueden modificar o manipular con <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >operadores</span> y <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >funciones</span> --que a su vez son objetos--. <br><br> -- - Bajo este término se esconde la simplicidad y flexibilidad de R. <br><br> -- - Algunas de las clases más comunes de objetos son: 'numeric', 'character', 'logical' (son <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >vectores</span>), 'matrix' (<span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >matriz</span>), 'data.frame' (<span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >marco de datos</span>), 'list' (<span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >lista</span>) y 'function' (<span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >función</span>). --- class: hide-logo # Tipo de objetos La cantidad de clases de objetos es muy grande y crece permanentemente a medida que se crean nuevos paquetes. <!-- Casi en cada paquete existen funciones que devuelven objetos de clases únicas que sólo esa función puede --> <!-- # generar y cuya interpretación y funcionalidad es específica del paquete en --> <!-- # cuestión o de otros creados posteriormente y que dependen del mismo. --> <!-- Por ejemplo las clases "igraph" o "Spatial" de los paquetes igraph y sp definen --> <!-- # objetos asociados a trabajo con grafos y datos espaciales respectivamente. --> | Objeto | Dimensión o largo | Tipo de elementos | Ejemplo |---------------|:-------------:|:------:|:------:| | Vector | length() | homogéneos |
| | Matriz | dim() | homogéneos |
| | Marco de datos | dim() | heterogéneos |
| | Lista | length() | heterogéneos |
<br>
<br>
| --- class: hide-logo # Vector - Los vectores son la <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >estructura más básica</span> que tenemos para manejar datos en R. <br><br> -- - Un <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >escalar</span> también es un <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >vector</span> para R. <br><br> -- - Comprender <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >cómo se trabaja con un vector</span> en R es fundamental para entender la lógica de R. <br><br> -- - Veremos cómo los vectores trabajan con <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >operadores y funciones</span>. <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Vectorización y coerción</span>. --- # Vector - Un vector es una <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >colección de uno o más objetos del mismo tipo</span> (números o caracteres pero no ambos). <br><br> -- - Según sus elementos será la clase del vector: <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >character</span>, <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >numeric</span>, <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >logical</span> <br><br> -- - La función <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >c()</span> crea un vector. <br><br> -- - Cada elemento va separado por una <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >coma</span> <br><br> -- - Con la función <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >class()</span> compruebo que tipo de objeto es --- class: hide-logo # Vector numérico ```r *x <- c(15, 16, 17, 19) ``` -- ```r x ``` ``` [1] 15 16 17 19 ``` -- ```r *class(x) ``` ``` [1] "numeric" ``` Se crea con la función c(), y contiene solo números separados por coma. ![](img/important.png) .content-box-purple[El separador de decimales es el punto.] --- class: hide-logo # Vector de caracteres - Para el caso de <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >texto</span>, la clase "character" es la que utiliza R para manejar este tipo de objetos. - Al igual que en la mayoría de los lenguajes de programación, R utiliza las comillas dobles (<span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >"</span>) o simples (<span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >'</span>) para delimitar un string. ```r *w <- c("lunes", "martes", "miércoles", "viernes") ``` -- ```r w ``` ``` [1] "lunes" "martes" "miércoles" "viernes" ``` -- ```r *class(w) ``` ``` [1] "character" ``` --- class: hide-logo # Vector de caracteres - Un vector de clase `character` también puede incluir <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >números</span> siempre que estén <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >entre comillas</span> ```r *w <- c("15", "16", "17", "19") ``` -- ```r w ``` ``` [1] "15" "16" "17" "19" ``` -- ```r *class(w) ``` ``` [1] "character" ``` --- # Advertencias (warnings) - Mensajes de advertencia **(Warnings)**: no necesariamente hay un error (ejecuta los comandos y solo te advierte de posibles inconvenientes). ```r x1 <- c(2, 8, 3, 4, 1) x2 <- c(0, 7, 5, 5, 6, 1) pmax(x1, x2) ``` ``` Warning in pmax(x1, x2): an argument will be fractionally recycled ``` ``` [1] 2 8 5 5 6 2 ``` --- # Errores (errors) - Mensajes de error aparecen en la consola con el texto <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Error: ...</span>. <br><br> -- - El error impide que se ejecute(n) la(s) líneas con error. <br><br> -- - Un error en el código es una orden que <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >R no puede interpretar</span> . <br><br> -- - Pueden deberse a <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >funciones mal escritas</span> , <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >expresiones erróneas o incompletas</span>, objetos que no han sido declarados, etc <br> <img src="img/error_code.gif" style="display: block; margin: auto;" /> <br><br> -- - Con <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >práctica</span> y la ayuda de los foros se <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >aprende</span> a entender los mensajes de error. --- # Ayuda externa: buscador ![](img/search.gif)<!-- --> --- # Ayuda externa: Stackoverflow ![](img/stackoverflow.gif)<!-- --> --- class: hide-logo # Sentencia no finalizada .left-column[ Si en vez de
aparece el símbolo
hay una sentencia no finalizada. ] .right-column[ ![](img/error.gif)<!-- --> ] <!-- ![](img/error.gif) --> --- # Nombrar objetos - Para nombrar objetos se pueden usar: <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >letras</span>, <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >números</span>, <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >punto</span>, <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >guión bajo</span> <br><br> -- - No puede empezar con números ni guión bajo: <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >~~2018listado~~</span> <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >~~_listado~~</span> <br><br> -- - Si empieza con punto debe seguirle una letra: <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >.listado</span> <br><br> -- - Lo común es que comiencen con una letra: <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >listado_2020</span> <br><br> -- - R es <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >sensible a mayúsculas y minúsculas</span>: no es lo mismo Listado que listado <!-- # ver --> <!-- https://www.computerworld.com/article/2497143/business-intelligence-beginner-s-guide-to-r-introduction.html --> --- # Ejercicio (6') - Crea un objeto llamado `nombre` con tu nombre escrito todo en minúscula <br - Crea un objeto llamado `apellido` con tu apellido escrito todo en minúscula <br> - Crea un objeto llamado `edad` con tu edad en números <br> - Pregunta la clase de cada uno de esos objetos e imprime el contenido de cada objeto. <br> - Crea un objeto llamado `nombre_completo` que contenga tu nombre y tu apellido, reutilizando los objetos creados. La función paste() puede ser de ayuda. <br> - ¿Cuántos caracteres tiene el objeto nombre, y el objeto apellido? La función `nchar()` puede ser de ayuda. --- class: hide-logo # Vector de caracteres - Qué pasa si por error omito las comillas en un elemento: ```r z <- c("lunes", 15) ``` -- - R no da error en este caso, convierte al 15 en texto. ```r z ``` ``` [1] "lunes" "15" ``` ```r class(z) ``` ``` [1] "character" ``` -- Si se combinan objetos de diferentes tipos, R reasigna los elementos a la clase apropiada. Esto se llama coerción. --- class: hide-logo # Coerción - Como mencionamos anteriormente, estos elementos deben ser todos de la misma clase. <br><br> -- - Si se combinan objetos de diferente clase, R reasigna los elementos a la clase apropiada. Como en el ejemplo que concatenaba elementos numéricos y caracteres. <br><br> -- - Si contiene números y texto el vector será de clase `character`. <br><br> -- - La coerción es necesaria para el funcionamiento correcto de R. Al mismo tiempo puede ser una fuente de errores si no se tiene en cuenta. <br><br> -- - ¿Qué te imaginas pasará si en vez de omitir las comillas en 15, las omito en lunes? <br><br> -- - Un texto sin comillas en R es un objeto (siempre que cumpla las reglas de un nombre de objeto). --- class: hide-logo # ¿Por qué importa la clase de un objeto? - La clase de un objeto afecta cómo las funciones trabajan con el mismo. <br><br> -- - Por ejemplo, la función mean() puede generar salidas coherentes con objetos numéricos o lógicos, pero no con caracteres. <br><br> -- ```r mean(x) w + 5 ``` - No toda función se puede aplicar a cualquier tipo de objeto. --- class: hide-logo # Vectorización .pull-left[ - R vectoriza las operaciones de manera que si sumo un número a un vector numérico, a cada elemento del vector le sumará ese número. - Esta propiedad es una ventaja ya que permite evitar loops en muchas de situaciones y de esta manera se obtiene un código más 'limpio' y eficiente. - El operador <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >:</span> sirve para generar vectores numéricos ] .pull-right[ ```r *x <- -1:4 x ``` ``` [1] -1 0 1 2 3 4 ``` ```r *x + 5 # adiciono 5 ``` ``` [1] 4 5 6 7 8 9 ``` ```r *x * 3 # multiplico por 3 ``` ``` [1] -3 0 3 6 9 12 ``` ] --- class: hide-logo # Funciones descriptivas de un vector numérico - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >length(x)</span>: devuelve la cantidad de elementos de x <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >sort(x, decreasing = F)</span>: ordena los elementos de manera creciente <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >sum(x)</span>: devuelve la suma de los elementos de x <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >max(x)</span>: máximo <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >min(x)</span>: mínimo --- class: hide-logo # Funciones descriptivas de un vector numérico - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >mean(x)</span>: promedio aritmético de x <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >median(x)</span>: mediana de x <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >sd(x)</span>: desvío estándar de x <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >var(x)</span>: varianza de x <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >summary(x)</span>: resumen descriptivo de x (mínimo, máximo, media, mediana, cuartiles) <!-- <br> --> <!-- -- --> <!-- - quantile(x, c(0.2,0.4,0.6,0.8)): cuantiles --> <!-- --- --> <!-- # Ejercicio --> <!-- Use your usual r-script to save the code for the following exercises. --> <!-- Create a vector of length 50 that contains the numbers from 1 to 5 repeated for 10 times. --> <!-- Create a vector x of length 404 in which the numbers 199 to 400 are repeated two times. Generate a new vector y, that contains the elements of x on the positions 53, 78 and 99. --> <!-- Create a character vector Freunde that contains the names of your three best friends. --> <!-- https://www.analyticsvidhya.com/blog/2019/05/beginner-guide-tidyverse-most-powerful-collection-r-packages-data-science/ --> <!-- # Los objetos del tipo "logical" son resultado de operaciones lógicas, como --> <!-- # comparaciones (¿a es mayor que b?, ¿h es distinto de 3.1415?, etc). Por --> <!-- # ejemplo: --> <!-- u <- 5 > 2:8 --> <!-- u # [1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE --> <!-- class(u) # "logical", es un vector con valores booleanos (ver lección relativa --> <!-- # a operadores lógicos). --> <!-- # Como verán la comparación aquí se hizo entre 5 y todos los elementos de 2:8 --> --- class: hide-logo # Data frame - Puede verse como un conjunto de vectores de diferente clase pero de igual largo. <br><br> -- - La Función data.frame() crea un marco de datos. <br><br> -- ```r df <- data.frame(x, w) ``` -- - En un data frame, cada variable es un vector. <br><br> -- - En general el data frame vendrá dado en un archivo que vamos a leer/importar desde R. --- # ![](img/airbnb.png) Barcelona - Trabajaremos con los datos de alojamientos en Barcelona de Airbnb al 10 de enero de 2020. Son datos abiertos disponibles en http://insideairbnb.com/get-the-data.html. - Son datos abiertos con licencia Creative Commons CC0 1.0 Universal "Public Domain Dedication. | Archivos | Descripción| |---------|------------| |listings.csv| listado de alojamientos disponibles | |reviews.csv | evaluaciones de personas alojadas | |neighbourhoods.csv | listado de barrios | |neighbourhoods.geojson | información geográfica de los barrios | --- # Cómo funciona Airbnb .pull-left[ - Quienes se hospedan pueden elegir entre casas/apartamentos enteros, solo cuartos privados o cuartos compartidos (room_type). <br><br> - Luego de la estadía deben dejar una evaluación (review). <br><br> - Los alojamientos varían en precio, mínimo de días de estadía, los días disponible, etc. <br><br> ] .pull-right[ <div class="figure" style="text-align: center"> <img src="https://live.staticflickr.com/804/26168540077_e7b1d01739_c_d.jpg" alt="Lisboa" width="280px" /> <p class="caption">Lisboa</p> </div> ] --- class: hide-logo # Importar archivo: read.csv() ```r listado <- read.csv("data/listings.csv", stringsAsFactors = FALSE) ``` <table> <thead> <tr> <th style="text-align:right;"> host_id </th> <th style="text-align:left;"> neighbourhood_group </th> <th style="text-align:right;"> latitude </th> <th style="text-align:right;"> longitude </th> <th style="text-align:left;"> room_type </th> <th style="text-align:right;"> price </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 71615 </td> <td style="text-align:left;"> Eixample </td> <td style="text-align:right;"> 41.40420 </td> <td style="text-align:right;"> 2.17306 </td> <td style="text-align:left;"> Entire home/apt </td> <td style="text-align:right;"> 60 </td> </tr> <tr> <td style="text-align:right;"> 90417 </td> <td style="text-align:left;"> Sant Martí </td> <td style="text-align:right;"> 41.41203 </td> <td style="text-align:right;"> 2.22114 </td> <td style="text-align:left;"> Entire home/apt </td> <td style="text-align:right;"> 210 </td> </tr> <tr> <td style="text-align:right;"> 136853 </td> <td style="text-align:left;"> Gràcia </td> <td style="text-align:right;"> 41.40950 </td> <td style="text-align:right;"> 2.15938 </td> <td style="text-align:left;"> Entire home/apt </td> <td style="text-align:right;"> 52 </td> </tr> <tr> <td style="text-align:right;"> 136853 </td> <td style="text-align:left;"> Gràcia </td> <td style="text-align:right;"> 41.40928 </td> <td style="text-align:right;"> 2.16112 </td> <td style="text-align:left;"> Entire home/apt </td> <td style="text-align:right;"> 58 </td> </tr> <tr> <td style="text-align:right;"> 141199 </td> <td style="text-align:left;"> Les Corts </td> <td style="text-align:right;"> 41.38720 </td> <td style="text-align:right;"> 2.14088 </td> <td style="text-align:left;"> Private room </td> <td style="text-align:right;"> 35 </td> </tr> </tbody> </table> --- # Visualizar los datos ```r # ver el objeto en otra ventana View(listado) ``` <!-- # ver que contiene listado directo en la consola, no lo hagan! --> <!-- listado --> ![](img/view.gif) --- # ¿Qué queremos averiguar de estos datos? - Primero me hago preguntas, luego piensa cuál es el código que las responde <br><br> -- - ¿Cuáles son las <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >variables</span>? ¿Cuántas son? <br><br> -- - ¿Cuántas <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >observaciones</span> tiene? <br><br> -- - ¿Qué <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >valores</span> toman esas variables? <br><br> -- - ¿Hay datos <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >faltantes</span>? <br><br> -- - ¿Hay casos <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >duplicados</span>? --- class: hide-logo # Explorar los datos Las funciones dim(), names() y str() admiten un data frame como argumento. <!-- https://arm.rbind.io/slides/xaringan.html#99 --> ```r dim(listado) # cantidad de filas y columnas nrow(listado) # cantidad de filas ncol(listado) # cantidad de columnas ``` -- ```r names(listado) # nombre de variables ``` -- ```r str(listado) # estructura de la base ``` -- La función summary() admite un data frame como argumento pero también una variable. ```r summary(listado) # resumen descriptivo de variables ``` --- class: hide-logo # Variables numéricas Para acceder a una variable de un data frame es necesario escribir <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" ><objeto>$<variable></span> .pull-left[ ```r # Máximo *max(listado$price) ``` ``` [1] 15000 ``` ```r # Mínimo *min(listado$price) ``` ``` [1] 0 ``` ```r # Promedio *mean(listado$price) ``` ``` [1] 129.7599 ``` ] .pull-right[ ```r # Mediana *median(listado$price) ``` ``` [1] 60 ``` ```r # Varianza *var(listado$price) ``` ``` [1] 194775.5 ``` ```r # Desvío estándar *sd(listado$price) ``` ``` [1] 441.3338 ``` ] <!-- --- --> <!-- # data$ --> <!-- Acceder a variables en un data frame: **data$variable** --> <!-- <br><br> --> <!-- <iframe src="https://giphy.com/embed/b55x0VFpFKm7S" width="480" height="333" frameBorder="0" class="giphy-embed" allowFullScreen></iframe><p><a href="https://giphy.com/gifs/lisa-simpson-writing-the-simpsons-b55x0VFpFKm7S"></a></p> --> --- # Ejercicio (3') - Cargar el archivo `listings.csv` de Barcelona. <br><br> - Calcular la media, mediana y varianza de las variables `minimum_nights`, `number_of_reviews`, `last_review`. <br><br> --- class: inverse, center, middle # Paquetes --- class: hide-logo # Paquetes: extender las funcionalidades de R - Por defecto vienen <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >precargadas</span> una serie de funciones que están en el paquete <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >'base'</span>. <br><br> -- - Las <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >funciones</span> en R se organizan en paquetes según <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >temas</span> o disciplinas. <br><br> -- - Los paquetes debe <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >instalarse en R una vez</span> pero es necesario <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >cargarlos en cada sesión</span> (cada vez que abrimos R). <br><br> -- - Hay millones de funciones si todas estuvieran precargadas, no habría suficiente memoria RAM para trabajar. Existen paquetes de tan variadas disciplinas que es muy probable que utilicemos relativamente pocos. <br><br> -- - Podemos consultar los paquetes disponibles escribiendo la función <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >available.packages()</span> y los instalados usando <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >installed.packages()</span>. También podemos generar nuestras propias funciones e incluso crear un paquete de R! --- class: inverse, center, middle # TidyveRse --- class: hide-logo # tidyverse .pull-left[ <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Conjunto de paquetes</span> para: <br><br> <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Importar</span> <br><br> <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Limpiar y transformar</span> <br><br> <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Procesar y analizar</span> <br><br> <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Visualizar</span> <!-- procesar, analizar y visualizar datos. --> ] .pull-rigth[ <img src="https://raw.githubusercontent.com/rstudio/hex-stickers/master/PNG/tidyverse.png" width="300px" /> Proporciona una forma unificada, armoniosa y más poderosa de trabajar con datos que la que ofrece el paquete base. ] --- class: hide-logo # Importación/Exportación de archivos .pull-left[ Archivos de texto plano<span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Visualizar</span> (txt, csv, tsv) <!-- ![](img/readr.png){width=180px} --> <img src="https://raw.githubusercontent.com/rstudio/hex-stickers/master/PNG/readr.png" width="120px" style="display: block; margin: auto;" /> Formatos propietarios<span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Visualizar</span> (dta, sav) <img src="https://raw.githubusercontent.com/rstudio/hex-stickers/master/PNG/haven.png" width="120px" style="display: block; margin: auto;" /> ] .pull-rigth[ <br> Archivos <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Excel</span> (xls, xlsx) <img src="https://raw.githubusercontent.com/rstudio/hex-stickers/master/PNG/readxl.png" width="120px" style="display: block; margin: auto;" /> <br> Paquete jsolite, archivos <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >JSON</span> (JavaScript Object Notation) <img src="img/json.png" width="120px" style="display: block; margin: auto;" /> ] --- class: hide-logo # Manipulación de datos .pull-left[ <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Trasformar </span> estructura de datos <img src="https://raw.githubusercontent.com/rstudio/hex-stickers/master/PNG/tidyr.png" width="140px" style="display: block; margin: auto;" /> Manipular <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >texto</span> <img src="https://raw.githubusercontent.com/rstudio/hex-stickers/master/PNG/stringr.png" width="140px" style="display: block; margin: auto;" /> ] .pull-rigth[ <br> Manipular <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >fechas</span> <img src="https://raw.githubusercontent.com/rstudio/hex-stickers/master/PNG/lubridate.png" width="140px" style="display: block; margin: auto;" /> Manipular <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >data frame</span> <img src="https://raw.githubusercontent.com/rstudio/hex-stickers/master/PNG/dplyr.png" width="140px" style="display: block; margin: auto;" /> ] --- class: hide-logo # Análisis y Visualización de datos .pull-left[ <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Gráficos y mapas</span> <br> <br> <img src="https://raw.githubusercontent.com/rstudio/hex-stickers/master/PNG/ggplot2.png" width="250px" style="display: block; margin: auto;" /> ] .pull-rigth[ <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Modelización</span> <br> <br> <br> <img src="https://raw.githubusercontent.com/rstudio/hex-stickers/master/PNG/broom.png" width="250px" style="display: block; margin: auto;" /> ] --- class: hide-logo # Paquetes: instalar y cargar ```r # instalar desde el CRAN install.packages("readr") # instalar desde github # devtools::install_github("username/packagename") devtools::install_github("tidyverse/readr") # cargar library(readr) ``` --- class: hide-logo # readr::read_csv() ```r library(readr) listado <- read_csv("data/listings.csv") # ver el objeto en la consola, ya no muestra hasta 1000 filas listado ``` ``` # A tibble: 20,708 x 16 id name host_id host_name neighbourhood_g… neighbourhood latitude <dbl> <chr> <dbl> <chr> <chr> <chr> <dbl> 1 18674 Huge… 71615 Mireia A… Eixample la Sagrada F… 41.4 2 23197 Foru… 90417 Etain (M… Sant Martí el Besòs i e… 41.4 3 31958 Gaud… 136853 Fidelio Gràcia el Camp d'en… 41.4 4 32471 Gaud… 136853 Fidelio Gràcia el Camp d'en… 41.4 5 32615 Sunn… 141199 Inge Les Corts les Corts 41.4 6 32711 Sagr… 135703 Nick Gràcia el Camp d'en… 41.4 7 34241 Priv… 73163 Andres Ciutat Vella el Barri Gòt… 41.4 8 34981 VIDR… 73163 Andres Ciutat Vella el Barri Gòt… 41.4 9 35379 Doub… 152232 Pablo Eixample l'Antiga Esq… 41.4 10 35390 Sing… 152232 Pablo Eixample l'Antiga Esq… 41.4 # … with 20,698 more rows, and 9 more variables: longitude <dbl>, # room_type <chr>, price <dbl>, minimum_nights <dbl>, # number_of_reviews <dbl>, last_review <date>, reviews_per_month <dbl>, # calculated_host_listings_count <dbl>, availability_365 <dbl> ``` --- # Ejercicio - Instalar el paquete `readr`. - Cargar el paquete `readr`. - Importar el archivo `listings.csv`. --- class: inverse, center, middle # R 'base' --- # Directorio de trabajo (working directory) - Refiere a los archivos que están en la <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >computadora</span> <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >getwd()</span>: muestra la ruta del directorio de trabajo. R trabaja por defecto en cierta carpeta que se llama directorio de trabajo donde va a leer y guardar los archivos. <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >setwd()</span>: define el directorio de trabajo, para modificarlo. - No es recomendable que la correcta ejecución de la sintaxis dependa de una ruta específica... - Más adelante veremos qué es trabajar en proyecto (Rproj) para salvar este problema. -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >dir()</span>: muestra los archivos que están en el directorio de trabajo <br><br> -- - R no entiende el <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >\</span> (con backslash se escriben las rutas en Windows) <br><br> -- - Las rutas en R se definen con <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >/</span> y también es válido usar `\\` --- # Espacio de trabajo (workspace / environment) - Se ubica en la <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >memoria RAM</span>. <br><br> -- - La colección de <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >objetos</span> generados en una sesión. <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >ls()</span> para obtener el <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >listado de los objetos</span> almacenados en la memoria RAM. <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Al cerrar Rstudio se pierden</span>, pero tenemos la sintaxis para volver a crearlos :) <br><br> -- - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Un objeto no modifica un archivo</span> a menos que se guarde/exporte como tal usando una función para tal fin. No es posible modificar un archivo por error. <br><br> -- - Para eliminar objetos puede utilizar la orden <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >rm()</span>. <br><br> -- - Al cerrar RStudio te consulta si querés guardar el espacio de trabajo (workspace), no lo guardes nunca, no sirve para nada. En vez de eso, configura RStudio para que no te haga más esa pregunta. --- # ~~Save workspace~~ ![](img/saveworkspace.gif)