class: center, middle, inverse, title-slide # R aplicado a la ECH ## Setiembre 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;" >8 talleres de 2,5 horas</span> cada uno <br> <a href="https://eva.fcs.edu.uy/course/view.php?id=945">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> usando <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >RStudio</span> aplicado a la ECH. - 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. - Introducir el <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >paquete ech</span> para lograr rápidamente: - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Calcular</span> nuevas <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >variables</span>. - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Estimar indicadores</span>: estimación puntual y por intervalo - 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>. - Entorno de trabajo, directorio de trabajo. - ¿Qué es un <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >script</span>? <br><br> -- - Introducción a la <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >ECH</span> y al <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >paquete ech</span>. - 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 seguir un camino menos empinado pero que nos lleve lejos. <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 # 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 # Ayuda --- # Buscar ayuda - Ayuda en R: - Si sabemos el nombre de la función exactamente: <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >?gini</span>, <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >help('gini')</span> - Si no sabemos el nombre exacto pero debería contener el término gini: <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >??gini</span> - Ayuda externa a R: - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >buscador</span> de un navegador de internet (google, duck duck go, etc.) - en los foros de <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Stackoverflow</span>(https://stackoverflow.com/) ![](img/stackoverflow.png) --- class: inverse, center, middle # RStudio --- class: hide-logo # Ventanas de [RStudio](https://www.rstudio.com/) <!-- ![](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) --- # 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) --- 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. 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" ``` --- # 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;" >~~2019ech~~</span> <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >~~_ech~~</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;" >.ech</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;" >ech_2019</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 Ech que ech <br><br> -- - Esto último vale también para los nombres de funciones, no es lo mismo View() que view(), la segunda no existe. <!-- # 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 # Coerción - 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 - Los elementos de un vector deben ser todos de la misma clase. <br><br> -- - Si se combinan objetos de diferente clase, R <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >reasigna los elementos a la clase apropiada</span>. <br><br> -- - Como en el ejemplo que concatenaba elementos numéricos y caracteres, 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 # 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 # ¿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 x <- c("15", "16", "17", "19") mean(x) w + 5 ``` - No toda función se puede aplicar a cualquier tipo de objeto. --- 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) --- 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. --- # 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;" /> --- # 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. --- 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 #Encuesta Continua de Hogares <!-- ![](img/ech_ine.jpg) --> --- #
Características - La Encuesta Continua de Hogares (ECH), releva información de los <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >hogares particulares</span> uruguayos, realizada anualmente por el Instituto Nacional de Estadística (INE). <br> -- - Un hogar particular "es la persona o grupo de personas que habitan bajo un <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >mismo techo</span> y que al menos para su alimentación, dependen de un <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >fondo común</span>" ([Metodología ENHA 2006](http://www.ine.gub.uy/documents/10181/36026/metodologia+enha+2006.pdf/89bcaa25-5099-46a7-bc1e-9f577c92b21e)). <br> -- - Se debe definir una persona <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >jefa de hogar</span> la que se tomará como referencia para determinar la relación entre quienes integran el hogar. <br><br> -- - Los objetivos son obtener <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >indicadores</span> para monitorear la evolución del <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >mercado de trabajo</span>, el <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >ingreso</span> de los hogares y las condiciones de vida de la población. <br> -- - Los microdatos se obtienen desde la [web del INE](http://ine.gub.uy/web/guest/encuesta-continua-de-hogares1) --- # Dimensiones - La ECH releva información referente a la vivienda, el hogar y las personas: - Características de la <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >vivienda</span> - Tenencia - Materiales de construcción, etc. - Características del <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >hogar</span> - Cantidad de personas - Relaciones de parentesco, etc. - Características de las <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >personas</span> que integran los hogares relevados - Situación ocupacional de las personas de 14 o más años - Ingresos - Educación, etc. --- class: inverse, center, middle # ech --- # Paquete ech - Es un paquete de R para <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >facilitar el procesamiento</span>de la Encuesta Continua de Hogares. - En su versión actual admite trabajar con las ECH de <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >2011 a 2019</span>. - Está pensado para trabajar con los <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >microdatos fusionados</span> (hogares y personas). - Está en <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >proceso de aceptación</span> en CRAN. Ahora disponible en [github](https://github.com/calcita/ech). - Lo desarrollo junto a [Richard Detomasi](https://github.com/RichDeto). <img src="https://raw.githubusercontent.com/calcita/ech/master/man/figures/ech_logo.png" width="110px" style="display: block; margin: auto;" /> --- # Historia y motivación de ech .left-column[ <img src="https://raw.githubusercontent.com/RichDeto/geouy/master/man/figures/geouy_logo_b.png" width="110px" style="display: block; margin: auto;" /> <img src="https://raw.githubusercontent.com/holatam/eph/master/man/figures/logo.png" width="110px" style="display: block; margin: auto;" /> <img src="https://camo.githubusercontent.com/09731059c02d852f557d90e2b2fd5ba8a3e97f03/68747470733a2f2f70616368616d616c746573652e6769746875622e696f2f636173656e2f68657869636f6e2e737667" width="110px" style="display: block; margin: auto;" /> ] .right-column[ - Una <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >puerta de entrada</span> a R. - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >Democratizar</span> el uso de la ECH, brindando una herramienta libre y gratuita. - Fomentar la <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >publicación de código</span>, no tan común por acá. - Al principio era rech y así lo presentamos en diferentes eventos de R. - Luego conocimos otros <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >proyectos similares</span>: [eph](https://github.com/holatam/eph) (Argentina) y [casen](https://github.com/pachamaltese/casen) (Chile)... Cambiamos el nombre y quitamos la parte de visualización y Richard creó [geouy](https://github.com/RichDeto/geouy) ] --- # Ventajas de usar ech - Función para <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >descargar los microdatos</span> desde la web del INE - Funciones para <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >calcular variables</span>: mercado de trabajo, ingresos, educación, etc. - Funciones para <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >estimar indicadores</span>: devuelven siempre un data.frame en formato tidy - Funciones para <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >descargar los datos de IPC, IPAB</span>, entre otros, también en un formato tidy. - Función para <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >descargar el diccionario</span> comparado entre bases de distintos años. - [Documentación](https://calcita.github.io/ech/index.html) para facilitar su uso <!-- ![](https://raw.githubusercontent.com/calcita/Curso-rECH/master/images/descargar_ech.gif) --> <!-- ![](https://raw.githubusercontent.com/calcita/Curso-rECH/master/images/unrar_ech.gif) --> --- class: inverse, center, middle # devtools::install_github() --- # Instalar y cargar ech - Un paquete <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >se instala una única vez</span>. - Para instalarlo desde <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >CRAN</span> usamos la función <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >install.packages() </span>. - Para instalarlo desde <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >github</span> usamos la función <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >install_github()</span>. Esta función está en el paquete <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >devtools</span>, si no lo tenemos instalado debemos hacerlo. ```r # instalamos devtools desde CRAN install.packages("devtools") ``` ```r # instalamos ech desde github devtools::install_github("calcita/ech") ``` - Lo <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >cargamos a la sesión</span> de trabajo con la función <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >library()</span> ```r library(ech) ``` --- class: inverse, center, middle # ech::get_microdata() --- # Descargar, descomprimir y leer La función <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >get_microdata()</span> se encarga de: - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >descargar</span> los microdatos del año indicado desde la web del INE - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >descomprimir</span> el archivo - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >leer</span> en R el archivo que contiene datos de personas y hogares fusionado - <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >guardar</span> el objeto en formato RData (opcional) ```r # leer archivo de 2019 *ech19 <- get_microdata(year = 2019, folder = "/home/calcita/Desktop", toR = FALSE) # consultar clase de objeto class(ech19) ``` El archivo descargado, va por defecto a una carpeta temporal si no definimos una ruta en el argumento *folder*. --- # 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 `\\` --- class: inverse, center, middle # Explorar los datos --- # "Ver" los datos ```r # ver los primeros casos del objeto en la consola *head(ech19) ``` ``` # A tibble: 3 x 8 numero nper anio mes dpto nomdpto secc segm <chr> <dbl> <chr> <dbl+lbl> <dbl+lbl> <chr> <chr> <chr> 1 2019000001 1 2019 8 [Agosto] 14 [Rocha] ROCHA 00 000 2 2019000001 2 2019 8 [Agosto] 14 [Rocha] ROCHA 00 000 3 2019000002 1 2019 2 [Febrero] 15 [Salto] SALTO 00 000 ``` ```r # ver los últimos casos del objeto en la consola tail(ech19) # ver el conjunto de datos en un ventana View(ech19) # ver que contiene directo en la consola. No recomendado!!! ech19 ``` --- # ¿Qué queremos averiguar de estos datos? - Primero me hago preguntas, luego pienso 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> -- - ¿Cuál es el <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >identificador</span> del hogar? <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>? --- # Explorar los datos Las funciones <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >dim()</span> y <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >names()</span> admiten un data frame como argumento. ```r *dim(ech19) # cantidad de filas y columnas ``` ``` [1] 107871 556 ``` ```r nrow(ech19) # cantidad de filas ``` ``` [1] 107871 ``` ```r ncol(ech19) # cantidad de columnas ``` ``` [1] 556 ``` ```r *names(ech19) # nombre de variables sort(names(ech19)) # ver los nombres por orden alfabético ``` --- class: inverse, center, middle # ech::organize_names() --- # Estandarizar los nombres de variables - Los nombres de las variables pueden sufrir modificaciones entre un año y otro de la encuesta. - La función <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >organize_names()</span> convierte todos los nombres a la ECH 2017 - Las variables pueden sufrir entre un año y otro un cambio en sus categorías, esto se contempla en las funciones que crean variables. - Estandarizar los nombres facilita el uso de ech pero <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >no es imprescindible</span>. ```r # estandarizo nombres *ech19 <- organize_names(data = ech19, year = 2019) ``` --- # Explorar los datos La función <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >summary()</span> admite un data frame como argumento pero también una variable. ```r # estructura del objeto str(ech19) # resumen descriptivo de variables summary(ech19) # una variable específica summary(ech19$region_3) ``` 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> --- # Variables numéricas La variable <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >d9</span> es el "número de habitaciones residenciales". .pull-left[ ```r # Máximo *max(ech19$d9) ``` ``` [1] 18 ``` ```r # Mínimo *min(ech19$d9) ``` ``` [1] 1 ``` ```r # Promedio *mean(ech19$d9) ``` ``` [1] 3.657359 ``` ] .pull-right[ ```r # Mediana *median(ech19$d9) ``` ``` [1] 4 ``` ```r # Varianza *var(ech19$d9) ``` ``` [1] 1.450789 ``` ```r # Desvío estándar *sd(ech19$d9) ``` ``` [1] 1.204487 ``` ] --- # Variables categóricas La función <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >table()</span> permite hacer una tabla de <span style=" font-weight: bold; border-radius: 4px; padding-right: 4px; padding-left: 4px; background-color: #b3e2cd !important;" >frecuencias absolutas.</span> ```r *table(ech19$nomdpto) ``` ``` ARTIGAS CANELONES CERRO LARGO COLONIA DURAZNO 2881 16543 3237 4398 2216 FLORES FLORIDA LAVALLEJA MALDONADO MONTEVIDEO 1113 2372 1946 5193 38207 PAYSANDU RIO NEGRO RIVERA ROCHA SALTO 4090 1896 3999 3207 4757 SAN JOSE SORIANO TACUAREMBO TREINTA Y TRES 4155 2732 3227 1702 ``` ```r # Tabla de frecuencias relativas ?prop.table ``` La salida que generan estas funciones no es tidy y conforme más categorías tiene una variable se vuelve más confusa.