class: center, middle, titular background-size: contain <img style="border-radius: 50%;" src="img/logofundapi.jpg" width="250px"/> # Capítulo 2: Manipulación de Datos en R ## **CAPACITACIÓN** #### LINDA CABRERA ORELLANA #### Mayo, 2024 --- # Contenido del Capítulo 2 - Transformación de datos con `dplyr` * Operador pipe `%>%` * Ordenar los datos de una variable * Seleccionar o descartar variables * Modificar el nombre de las variables * Filtrar observaciones * Agregar o editar variables * Resumir información * Agrupar o segmentar datos - Ordenar datos con `tidyr` * Reemplazar NAs * Separar una columna en varias columnas --- class: middle, center, inverse
# Transformación de datos con `dplyr` --- ## Operador `pipe` `%>%` .pull-left[ .center[ <img src="img/magrittr.png" width="200px"> ] `magrittr` ofrece un conjunto de operadores que hacen que su código sea más legible. ```r library(magrittr) ``` ] .pull-right[ * Estructura secuencias de operaciones de datos de izquierda a derecha (a diferencia de desde adentro hacia afuera). * Minimiza la necesidad de variables locales y definiciones de funciones, y * Facilita la adición de pasos en cualquier lugar de la secuencia de operaciones. Puede utilizar el atajo de teclado `Ctrl+Shift+M` para generar el operador `%>%`. ```r dataset %>% funcion1() %>% funcion2() %>% funcion3() ``` ] <br> .footnote[ [magrittr.tidyverse.org](https://magrittr.tidyverse.org/) ] --- .center[  ] --- # Funciones del paquete `dplyr` <br> <br> | Función | Acción | |:---------------|-------------------------------------------:| | `select()` | *Selecciona o descarta variables (columnas) de un conjunto de datos* | | `rename()` | *Modifica el nombre de las variables* | | `arrange()` | *Ordena los datos de variables* | | `filter()` | *Filtra las observaciones (filas) de interés* | | `mutate()` | *Agrega o edita variables (columnas)* | | `summarise()` | *Resume los datos en tablas* | | `group_by()` | *Agrupa o segmenta los datos en función de una variable (columna)* | <br> <br> <br> <br> <br> .footnote[ [dplyr.tidyverse.org](https://dplyr.tidyverse.org/) ] --- # Seleccionar o descartar variables **`select()`** permite seleccionar rápidamente un subconjunto útil utilizando operaciones basadas en los nombres de las variables. La función tiene el siguiente esquema: ```r select(data, columnas... ) ``` Selecciono las variables que deseo del conjunto de datos `ranking_2022`, mantendrá el orden que yo indique en la selección: ```r ranking_2022 %>% select(Nombre, Provincia, Sector, Patrimonio.2022, Ingreso.Total.2022) %>% view() ``` Otra forma de seleccionar es _deseleccionando_ las variables que no deseo del conjunto de datos. --- # Modificar el nombre de las variables **`rename()`** se utiliza para cambiar el nombre de las variables. La función tiene el siguiente esquema: ```r rename(data, columnas... ) ``` Cambiando el nombre de las variables: ```r ranking_2022 <- ranking_2022 %>% rename(tipo_compania = Tipo.Compania, act_economica = Actividad.economica, empleados = Cant..Empleados, activos = Activio.2022, patrimonio = Patrimonio.2022, ingreso_ventas = Ingreso.por.ventas.2022, utilidad_antes_impuesto = Utilidad.antes.del.impuesto.2022, IR_causado = IR.causado.2022, ingreso_total = Ingreso.Total.2022) ``` --- # Filtrar observaciones En esta parte te serán de mucha utilidad los operadores relacionales y operadores lógicos que aprendimos al inicio del curso. Vamos a delimitar a las empresas de AZUAY que tuvieron que pagar más de \$10,000 de impuesto a la renta. ```r ranking_2022 %>% filter(provincia == "AZUAY" & IR_causado > 10000) %>% view() ``` --- # Agregar o editar variables Con **`mutate()`** agregaremos variables al conjunto de datos `ranking_2022`. El objetivo es evaluar la eficiencia con la que una empresa usa su patrimonio para generar ingresos y utilidades. ```r ## Calcular el retorno sobre patrimonio (ROE) ranking_2022 <- ranking_2022 %>% mutate(ROE = utilidad_antes_impuesto / patrimonio) ranking_2022 <- ranking_2022 %>% mutate(ROE = ifelse(is.finite(utilidad_antes_impuesto / patrimonio), ROE, 0)) ``` --- # Resumir información **`summarise()`** se encarga de colapsar un data.frame en una sola fila. Es mucho más útil si lo enlazamos con `group_by()`. #### Calcular el número promedio de empleados ```r ranking_2022 %>% summarise(media_empleados = mean(empleados)) ``` #### Calcular el valor más alto de impuesto a la renta causado en el 2022 ```r ranking_2022 %>% summarise(max_impuesto_causado = max(IR_causado)) ``` --- # Agrupar o segmentar datos **`group_by()`** realiza operaciones en grupos definidos por variables que por sí sola no dará ningún resultado, por lo que debe ir seguido de la función `summarise()` con una acción apropiada para realizar. #### Calcular el promedio de empleados, el máximo de impuesto a la renta causado, la media de impuesto a la renta causado y el número total de empresas por provincias y sectores. ```r ranking_2022 %>% group_by(provincia, sector) %>% summarise(media_empleados = mean(empleados), max_impuesto_causado = max(IR_causado), media_impuesto_causado = mean(IR_causado), empresas = n()) %>% view() ``` --- class: middle, center, inverse <br> <br> # Manipulación de Datos en R ## **CAPÍTULO 2** <br> <br> .center[ ### [@lindateachtech
](https://www.linkedin.com/in/lindateachtech/) ### [@lindateachtech
](https://twitter.com/lindateachtech) ]