Ejercicio 1:
pacman::p_load(
rio,
DT,
here,
janitor,
lubridate,
epikit,
tidyverse,
naniar
)
- 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
- 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
- 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
- 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
- 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
- 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
- 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)
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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