Ejercicio 1:

pacman::p_load(
rio,
DT,
here,
janitor,
lubridate, 
epikit,
tidyverse, 
naniar
)
  1. Crear un data frame con los datos de la tabla
empresa <- data.frame(Mes = c("Mayo", "Junio", "Julio"),Ingresos = c(45000, 41500, 51200),Gastos = c(33400, 35400, 35600))

empresa
##     Mes Ingresos Gastos
## 1  Mayo    45000  33400
## 2 Junio    41500  35400
## 3 Julio    51200  35600
  1. Añade una nueva columna denominada impuestos.
empresa1<-mutate(empresa, Impuestos=c(6450, 6300, 7100))
empresa1
##     Mes Ingresos Gastos Impuestos
## 1  Mayo    45000  33400      6450
## 2 Junio    41500  35400      6300
## 3 Julio    51200  35600      7100
  1. Añade una nueva fila con los siguientes datos de Agosto
empresa2<-empresa1 %>%
  add_row(Mes="Agosto", Ingresos=c(49700), Gastos = c(36300), Impuestos = c(6850))
empresa2
##      Mes Ingresos Gastos Impuestos
## 1   Mayo    45000  33400      6450
## 2  Junio    41500  35400      6300
## 3  Julio    51200  35600      7100
## 4 Agosto    49700  36300      6850
  1. Cambia los ingresos de julio por 50400.
empresa2$Ingresos[empresa2$Mes == "Julio"] <- 50400
empresa2
##      Mes Ingresos Gastos Impuestos
## 1   Mayo    45000  33400      6450
## 2  Junio    41500  35400      6300
## 3  Julio    50400  35600      7100
## 4 Agosto    49700  36300      6850
  1. Crea una nueva columna con los beneficios de cada mes (ingresos- gastos- impuestos).
empresa3<-empresa2 %>% mutate(Beneficios= Ingresos - Gastos - Impuestos)
empresa3
##      Mes Ingresos Gastos Impuestos Beneficios
## 1   Mayo    45000  33400      6450       5150
## 2  Junio    41500  35400      6300       -200
## 3  Julio    50400  35600      7100       7700
## 4 Agosto    49700  36300      6850       6550
  1. Crea una nueva columna de tipo factor, que denomines Balance con dos posibles categorías, positivo: si hay beneficios y negativo: si hay pérdidas.
empresa4 <-empresa3 %>% mutate(Balance=if_else(Beneficios > 0,  "Positivo","Negativo"))
empresa4
##      Mes Ingresos Gastos Impuestos Beneficios  Balance
## 1   Mayo    45000  33400      6450       5150 Positivo
## 2  Junio    41500  35400      6300       -200 Negativo
## 3  Julio    50400  35600      7100       7700 Positivo
## 4 Agosto    49700  36300      6850       6550 Positivo
  1. Filtra el conjunto de datos para quedarse con los nombres de los meses y los beneficios de los meses con balance positivo.
empresa5 <- empresa4 %>% filter(Balance == "Positivo")%>% 
  select(Mes, Beneficios)
empresa5
##      Mes Beneficios
## 1   Mayo       5150
## 2  Julio       7700
## 3 Agosto       6550

Ejercicio 2:

library(dplyr)
library(tidyr)
  1. Crea un data frame con estos datos.
url <- "https://raw.githubusercontent.com/jairoayala1212/Database/main/Medicos.csv"
medicos_df <- read.csv(url)
medicos_df
##                             nombre edad sexo peso altura colesterol
## 1     José Luis Martínez Izquierdo   18    H   85   1.79        182
## 2                   Rosa Díaz Díaz   32    M   65   1.73        232
## 3            Javier Garcia Sánchez   24    H   NA   1.81        191
## 4              Carmen López Pinzón   35    M   65   1.70        200
## 5             Marisa López Collado   46    M   51   1.58        148
## 6                Antonio Ruiz Cruz   68    H   66   1.74        249
## 7          Antonio Fernández Ocaña   51    H   62   1.72        276
## 8            Pilar Martín González   22    M   60   1.66         NA
## 9             Pedro Gálvez Tenorio   35    H   90   1.94        241
## 10         Santiago Reillo Manzano   46    H   75   1.85        280
## 11           Macarena Álvarez Luna   53    M   55   1.62        262
## 12                 José María Sanz   58    H   78   1.87        198
## 13 Miguel Angel Cuadrado Gutiérrez   27    H  109   1.98        210
## 14           Carolina Rubio Moreno   20    M   61   1.77        194
  1. Encuentre una visión general de todo la base de datos (cantidad de variables, observaciones, tipos de variables, etc).
summary(medicos_df)
##     nombre               edad           sexo                peso       
##  Length:14          Min.   :18.00   Length:14          Min.   : 51.00  
##  Class :character   1st Qu.:24.75   Class :character   1st Qu.: 61.00  
##  Mode  :character   Median :35.00   Mode  :character   Median : 65.00  
##                     Mean   :38.21                      Mean   : 70.92  
##                     3rd Qu.:49.75                      3rd Qu.: 78.00  
##                     Max.   :68.00                      Max.   :109.00  
##                                                        NA's   :1       
##      altura        colesterol   
##  Min.   :1.580   Min.   :148.0  
##  1st Qu.:1.705   1st Qu.:194.0  
##  Median :1.755   Median :210.0  
##  Mean   :1.769   Mean   :220.2  
##  3rd Qu.:1.840   3rd Qu.:249.0  
##  Max.   :1.980   Max.   :280.0  
##                  NA's   :1
dim(medicos_df)
## [1] 14  6
  1. Crea una nueva columna con el índice de masa corporal, usando la siguiente fórmula:
medicos_IMC <- medicos_df %>%
  mutate(IMC = peso/altura)
medicos_IMC
##                             nombre edad sexo peso altura colesterol      IMC
## 1     José Luis Martínez Izquierdo   18    H   85   1.79        182 47.48603
## 2                   Rosa Díaz Díaz   32    M   65   1.73        232 37.57225
## 3            Javier Garcia Sánchez   24    H   NA   1.81        191       NA
## 4              Carmen López Pinzón   35    M   65   1.70        200 38.23529
## 5             Marisa López Collado   46    M   51   1.58        148 32.27848
## 6                Antonio Ruiz Cruz   68    H   66   1.74        249 37.93103
## 7          Antonio Fernández Ocaña   51    H   62   1.72        276 36.04651
## 8            Pilar Martín González   22    M   60   1.66         NA 36.14458
## 9             Pedro Gálvez Tenorio   35    H   90   1.94        241 46.39175
## 10         Santiago Reillo Manzano   46    H   75   1.85        280 40.54054
## 11           Macarena Álvarez Luna   53    M   55   1.62        262 33.95062
## 12                 José María Sanz   58    H   78   1.87        198 41.71123
## 13 Miguel Angel Cuadrado Gutiérrez   27    H  109   1.98        210 55.05051
## 14           Carolina Rubio Moreno   20    M   61   1.77        194 34.46328
  1. Crea una nueva variable, denominada obesidad recodificando la columna IMC en las siguientes categorías:
medicos_obesidad <- medicos_IMC %>%
  mutate(obesidad = case_when(IMC < 18.5 ~ "Bajo peso",
                              IMC <= 24.5 ~ "Saludable",
                              IMC <= 30 ~ "Sobrepeso",
                              IMC > 30 ~ "Obeso"))
medicos_obesidad
##                             nombre edad sexo peso altura colesterol      IMC
## 1     José Luis Martínez Izquierdo   18    H   85   1.79        182 47.48603
## 2                   Rosa Díaz Díaz   32    M   65   1.73        232 37.57225
## 3            Javier Garcia Sánchez   24    H   NA   1.81        191       NA
## 4              Carmen López Pinzón   35    M   65   1.70        200 38.23529
## 5             Marisa López Collado   46    M   51   1.58        148 32.27848
## 6                Antonio Ruiz Cruz   68    H   66   1.74        249 37.93103
## 7          Antonio Fernández Ocaña   51    H   62   1.72        276 36.04651
## 8            Pilar Martín González   22    M   60   1.66         NA 36.14458
## 9             Pedro Gálvez Tenorio   35    H   90   1.94        241 46.39175
## 10         Santiago Reillo Manzano   46    H   75   1.85        280 40.54054
## 11           Macarena Álvarez Luna   53    M   55   1.62        262 33.95062
## 12                 José María Sanz   58    H   78   1.87        198 41.71123
## 13 Miguel Angel Cuadrado Gutiérrez   27    H  109   1.98        210 55.05051
## 14           Carolina Rubio Moreno   20    M   61   1.77        194 34.46328
##    obesidad
## 1     Obeso
## 2     Obeso
## 3      <NA>
## 4     Obeso
## 5     Obeso
## 6     Obeso
## 7     Obeso
## 8     Obeso
## 9     Obeso
## 10    Obeso
## 11    Obeso
## 12    Obeso
## 13    Obeso
## 14    Obeso
  1. Reordena la base de datos, colocando la columna sexo antes que la columna edad.
medico_sexo <- medicos_obesidad %>% 
  relocate(sexo, .before = edad)
medico_sexo
##                             nombre sexo edad peso altura colesterol      IMC
## 1     José Luis Martínez Izquierdo    H   18   85   1.79        182 47.48603
## 2                   Rosa Díaz Díaz    M   32   65   1.73        232 37.57225
## 3            Javier Garcia Sánchez    H   24   NA   1.81        191       NA
## 4              Carmen López Pinzón    M   35   65   1.70        200 38.23529
## 5             Marisa López Collado    M   46   51   1.58        148 32.27848
## 6                Antonio Ruiz Cruz    H   68   66   1.74        249 37.93103
## 7          Antonio Fernández Ocaña    H   51   62   1.72        276 36.04651
## 8            Pilar Martín González    M   22   60   1.66         NA 36.14458
## 9             Pedro Gálvez Tenorio    H   35   90   1.94        241 46.39175
## 10         Santiago Reillo Manzano    H   46   75   1.85        280 40.54054
## 11           Macarena Álvarez Luna    M   53   55   1.62        262 33.95062
## 12                 José María Sanz    H   58   78   1.87        198 41.71123
## 13 Miguel Angel Cuadrado Gutiérrez    H   27  109   1.98        210 55.05051
## 14           Carolina Rubio Moreno    M   20   61   1.77        194 34.46328
##    obesidad
## 1     Obeso
## 2     Obeso
## 3      <NA>
## 4     Obeso
## 5     Obeso
## 6     Obeso
## 7     Obeso
## 8     Obeso
## 9     Obeso
## 10    Obeso
## 11    Obeso
## 12    Obeso
## 13    Obeso
## 14    Obeso
  1. Elimina las filas con datos faltantes en la columna colesterol.
datos_faltantes <- medico_sexo %>%
  drop_na(colesterol)
datos_faltantes
##                             nombre sexo edad peso altura colesterol      IMC
## 1     José Luis Martínez Izquierdo    H   18   85   1.79        182 47.48603
## 2                   Rosa Díaz Díaz    M   32   65   1.73        232 37.57225
## 3            Javier Garcia Sánchez    H   24   NA   1.81        191       NA
## 4              Carmen López Pinzón    M   35   65   1.70        200 38.23529
## 5             Marisa López Collado    M   46   51   1.58        148 32.27848
## 6                Antonio Ruiz Cruz    H   68   66   1.74        249 37.93103
## 7          Antonio Fernández Ocaña    H   51   62   1.72        276 36.04651
## 8             Pedro Gálvez Tenorio    H   35   90   1.94        241 46.39175
## 9          Santiago Reillo Manzano    H   46   75   1.85        280 40.54054
## 10           Macarena Álvarez Luna    M   53   55   1.62        262 33.95062
## 11                 José María Sanz    H   58   78   1.87        198 41.71123
## 12 Miguel Angel Cuadrado Gutiérrez    H   27  109   1.98        210 55.05051
## 13           Carolina Rubio Moreno    M   20   61   1.77        194 34.46328
##    obesidad
## 1     Obeso
## 2     Obeso
## 3      <NA>
## 4     Obeso
## 5     Obeso
## 6     Obeso
## 7     Obeso
## 8     Obeso
## 9     Obeso
## 10    Obeso
## 11    Obeso
## 12    Obeso
## 13    Obeso
  1. Ordena la base de datos según la columna nombre.
orden_alfabetico <- datos_faltantes %>%
  arrange(nombre)
orden_alfabetico
##                             nombre sexo edad peso altura colesterol      IMC
## 1          Antonio Fernández Ocaña    H   51   62   1.72        276 36.04651
## 2                Antonio Ruiz Cruz    H   68   66   1.74        249 37.93103
## 3              Carmen López Pinzón    M   35   65   1.70        200 38.23529
## 4            Carolina Rubio Moreno    M   20   61   1.77        194 34.46328
## 5            Javier Garcia Sánchez    H   24   NA   1.81        191       NA
## 6     José Luis Martínez Izquierdo    H   18   85   1.79        182 47.48603
## 7                  José María Sanz    H   58   78   1.87        198 41.71123
## 8            Macarena Álvarez Luna    M   53   55   1.62        262 33.95062
## 9             Marisa López Collado    M   46   51   1.58        148 32.27848
## 10 Miguel Angel Cuadrado Gutiérrez    H   27  109   1.98        210 55.05051
## 11            Pedro Gálvez Tenorio    H   35   90   1.94        241 46.39175
## 12                  Rosa Díaz Díaz    M   32   65   1.73        232 37.57225
## 13         Santiago Reillo Manzano    H   46   75   1.85        280 40.54054
##    obesidad
## 1     Obeso
## 2     Obeso
## 3     Obeso
## 4     Obeso
## 5      <NA>
## 6     Obeso
## 7     Obeso
## 8     Obeso
## 9     Obeso
## 10    Obeso
## 11    Obeso
## 12    Obeso
## 13    Obeso
  1. Crea una nueva base de datos que contenga solo las mujeres.
mujeres_df <- medicos_df %>%
  filter(sexo == "M")
mujeres_df
##                  nombre edad sexo peso altura colesterol
## 1        Rosa Díaz Díaz   32    M   65   1.73        232
## 2   Carmen López Pinzón   35    M   65   1.70        200
## 3  Marisa López Collado   46    M   51   1.58        148
## 4 Pilar Martín González   22    M   60   1.66         NA
## 5 Macarena Álvarez Luna   53    M   55   1.62        262
## 6 Carolina Rubio Moreno   20    M   61   1.77        194
  1. Crea una nueva base de datos que contenga hombres mayores de 30 años.
hombres_mayores_30_df <- medicos_df %>%
  filter(sexo == "H", edad > 30)
hombres_mayores_30_df
##                    nombre edad sexo peso altura colesterol
## 1       Antonio Ruiz Cruz   68    H   66   1.74        249
## 2 Antonio Fernández Ocaña   51    H   62   1.72        276
## 3    Pedro Gálvez Tenorio   35    H   90   1.94        241
## 4 Santiago Reillo Manzano   46    H   75   1.85        280
## 5         José María Sanz   58    H   78   1.87        198
  1. Crea una nueva base de datos volviéndola anónima (elimina la columna nombre).
medicos_anonimos_df <- medicos_df %>%
  subset(select = -nombre)
medicos_anonimos_df
##    edad sexo peso altura colesterol
## 1    18    H   85   1.79        182
## 2    32    M   65   1.73        232
## 3    24    H   NA   1.81        191
## 4    35    M   65   1.70        200
## 5    46    M   51   1.58        148
## 6    68    H   66   1.74        249
## 7    51    H   62   1.72        276
## 8    22    M   60   1.66         NA
## 9    35    H   90   1.94        241
## 10   46    H   75   1.85        280
## 11   53    M   55   1.62        262
## 12   58    H   78   1.87        198
## 13   27    H  109   1.98        210
## 14   20    M   61   1.77        194