Ejercicio 1:

La siguiente tabla contiene los ingresos y gastos de una empresa generados durante el verano.

Realiza los siguientes ejercicios con base en la información de esta tabla. 1. Crear un data frame con los datos de la tabla.

tabla1 <- data.frame(
  Mes = c("Mayo", "Junio", "Julio"),
  Ingresos = c(45000, 41500, 51200),
  Gastos = c(33400, 35400, 35600)
)
  1. Añade una nueva columna denominada impuestos.
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
tabla1 <- mutate(tabla1, Impuestos= c(6450, 6300, 7100))
  1. Añade una nueva fila con los siguientes datos de Agosto.
library(tibble)
tabla1<- tabla1 %>% add_row(Mes = "Agosto", Ingresos = 49700, Gastos = 36300, Impuestos = 6850)
  1. Cambia los ingresos de julio por 50400.
tabla1 <- tabla1 %>%
  mutate(Ingresos = recode(Ingresos, "51200" = 50400))
  1. Crea una nueva columna con los beneficios de cada mes (ingresos - gastos - impuestos).
library(dplyr)

tabla1 <- tabla1 %>%
  mutate(Beneficios = Ingresos - Gastos - Impuestos)
  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.
tabla1 <- tabla1 %>%
  mutate(Balance = factor(ifelse(Beneficios > 0, "Positivo", "Negativo")))

Base de datos con los cambios realizados de la parte 2 - 6

tabla1
##      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.
tabla2 <- tabla1 %>%
  filter(Balance == "Positivo") %>%
  select(Mes, Beneficios)
tabla2
##      Mes Beneficios
## 1   Mayo       5150
## 2  Julio       7700
## 3 Agosto       6550

Ejercicio 2:

library(readr)
Medicos <- read_csv("Medicos.csv")
## Rows: 14 Columns: 6
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): nombre, sexo
## dbl (4): edad, peso, altura, colesterol
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
  1. Crea un data frame con estos datos.
data.frame(Medicos)
##                             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).
skimr::skim(Medicos)
Data summary
Name Medicos
Number of rows 14
Number of columns 6
_______________________
Column type frequency:
character 2
numeric 4
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
nombre 0 1 14 31 0 14 0
sexo 0 1 1 1 0 2 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
edad 0 1.00 38.21 15.62 18.00 24.75 35.00 49.75 68.00 ▇▅▃▅▂
peso 1 0.93 70.92 16.13 51.00 61.00 65.00 78.00 109.00 ▇▅▅▂▂
altura 0 1.00 1.77 0.12 1.58 1.70 1.75 1.84 1.98 ▆▇▆▃▃
colesterol 1 0.93 220.23 39.85 148.00 194.00 210.00 249.00 280.00 ▂▇▂▅▅
  1. Crea una nueva columna con el índice de masa corporal, usando la siguiente fórmula:
library(dplyr)

Medicos <- Medicos %>%
  mutate(IMC = peso / (altura^2))
  1. Crea una nueva variable, denominada obesidad recodificando la columna IMC en las siguientes categorías:
Medicos <- Medicos %>%
  mutate(obesidad = case_when(
    IMC < 18.5 ~ "Bajo peso",
    IMC >= 18.5 & IMC <= 24.5 ~ "Saludable",
    IMC > 24.5 & IMC <= 30 ~ "Sobrepeso",
    IMC > 30 ~ "Obeso"
  ))
  1. Reordena la base de datos, colocando la columna sexo antes que la columna edad.
Medicos <- Medicos %>%
  select(nombre, sexo, edad, everything())
  1. Elimina las filas con datos faltantes en la columna colesterol.
library(tidyr)
Medicos <- Medicos %>%
    drop_na(colesterol)
  1. Ordena la base de datos según la columna nombre.
Medicos <- Medicos %>%
  arrange(nombre)

Base de datos con los cambios realizados de la parte 5 - 7

Medicos
## # A tibble: 13 × 8
##    nombre                     sexo   edad  peso altura colesterol   IMC obesidad
##    <chr>                      <chr> <dbl> <dbl>  <dbl>      <dbl> <dbl> <chr>   
##  1 Antonio Fernández Ocaña    H        51    62   1.72        276  21.0 Saludab…
##  2 Antonio Ruiz Cruz          H        68    66   1.74        249  21.8 Saludab…
##  3 Carmen López Pinzón        M        35    65   1.7         200  22.5 Saludab…
##  4 Carolina Rubio Moreno      M        20    61   1.77        194  19.5 Saludab…
##  5 Javier Garcia Sánchez      H        24    NA   1.81        191  NA   <NA>    
##  6 José Luis Martínez Izquie… H        18    85   1.79        182  26.5 Sobrepe…
##  7 José María Sanz            H        58    78   1.87        198  22.3 Saludab…
##  8 Macarena Álvarez Luna      M        53    55   1.62        262  21.0 Saludab…
##  9 Marisa López Collado       M        46    51   1.58        148  20.4 Saludab…
## 10 Miguel Angel Cuadrado Gut… H        27   109   1.98        210  27.8 Sobrepe…
## 11 Pedro Gálvez Tenorio       H        35    90   1.94        241  23.9 Saludab…
## 12 Rosa Díaz Díaz             M        32    65   1.73        232  21.7 Saludab…
## 13 Santiago Reillo Manzano    H        46    75   1.85        280  21.9 Saludab…
  1. Crea una nueva base de datos que contenga solo las mujeres.
Mujeres <- Medicos %>%
  filter(sexo == "M")
Mujeres
## # A tibble: 5 × 8
##   nombre                sexo   edad  peso altura colesterol   IMC obesidad 
##   <chr>                 <chr> <dbl> <dbl>  <dbl>      <dbl> <dbl> <chr>    
## 1 Carmen López Pinzón   M        35    65   1.7         200  22.5 Saludable
## 2 Carolina Rubio Moreno M        20    61   1.77        194  19.5 Saludable
## 3 Macarena Álvarez Luna M        53    55   1.62        262  21.0 Saludable
## 4 Marisa López Collado  M        46    51   1.58        148  20.4 Saludable
## 5 Rosa Díaz Díaz        M        32    65   1.73        232  21.7 Saludable
  1. Crea una nueva base de datos que contenga hombres mayores de 30 años.
Hombres_mayores_30 <- Medicos %>%
  filter(sexo == "H" & edad > 30)
Hombres_mayores_30
## # A tibble: 5 × 8
##   nombre                  sexo   edad  peso altura colesterol   IMC obesidad 
##   <chr>                   <chr> <dbl> <dbl>  <dbl>      <dbl> <dbl> <chr>    
## 1 Antonio Fernández Ocaña H        51    62   1.72        276  21.0 Saludable
## 2 Antonio Ruiz Cruz       H        68    66   1.74        249  21.8 Saludable
## 3 José María Sanz         H        58    78   1.87        198  22.3 Saludable
## 4 Pedro Gálvez Tenorio    H        35    90   1.94        241  23.9 Saludable
## 5 Santiago Reillo Manzano H        46    75   1.85        280  21.9 Saludable
  1. Crea una nueva base de datos volviéndola anónima (elimina la columna nombre)
Medicos_anonima <- Medicos %>%
  select(-nombre)
Medicos_anonima
## # A tibble: 13 × 7
##    sexo   edad  peso altura colesterol   IMC obesidad 
##    <chr> <dbl> <dbl>  <dbl>      <dbl> <dbl> <chr>    
##  1 H        51    62   1.72        276  21.0 Saludable
##  2 H        68    66   1.74        249  21.8 Saludable
##  3 M        35    65   1.7         200  22.5 Saludable
##  4 M        20    61   1.77        194  19.5 Saludable
##  5 H        24    NA   1.81        191  NA   <NA>     
##  6 H        18    85   1.79        182  26.5 Sobrepeso
##  7 H        58    78   1.87        198  22.3 Saludable
##  8 M        53    55   1.62        262  21.0 Saludable
##  9 M        46    51   1.58        148  20.4 Saludable
## 10 H        27   109   1.98        210  27.8 Sobrepeso
## 11 H        35    90   1.94        241  23.9 Saludable
## 12 M        32    65   1.73        232  21.7 Saludable
## 13 H        46    75   1.85        280  21.9 Saludable