Ejercicio 1

## 
## 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
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ readr     2.1.4
## ✔ ggplot2   3.4.2     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

PARTE 1 PARTE 2 y 3

Tabla_IG <- data.frame(
Mes = c("Mayo", "Junio", "Julio"), 
Ingresos = c(45000, 41500, 51200),
Gastos = c(33400, 35400, 35600)) %>%
mutate(Impuestos = c(6450, 6300, 7100))
head(Tabla_IG)
##     Mes Ingresos Gastos Impuestos
## 1  Mayo    45000  33400      6450
## 2 Junio    41500  35400      6300
## 3 Julio    51200  35600      7100
Agosto <- data.frame(
  Mes = "Agosto",
  Ingresos = 49700,
  Gastos = 36300,
  Impuestos = 6850
)
head(Agosto)
##      Mes Ingresos Gastos Impuestos
## 1 Agosto    49700  36300      6850

PARTE 5

# Beneficios
Tabla_IG[Tabla_IG$Mes == "Julio", "Ingresos"] <- 50400
head(Tabla_IG)
##     Mes Ingresos Gastos Impuestos
## 1  Mayo    45000  33400      6450
## 2 Junio    41500  35400      6300
## 3 Julio    50400  35600      7100
str(Tabla_IG)
## 'data.frame':    3 obs. of  4 variables:
##  $ Mes      : chr  "Mayo" "Junio" "Julio"
##  $ Ingresos : num  45000 41500 50400
##  $ Gastos   : num  33400 35400 35600
##  $ Impuestos: num  6450 6300 7100
glimpse(Tabla_IG)
## Rows: 3
## Columns: 4
## $ Mes       <chr> "Mayo", "Junio", "Julio"
## $ Ingresos  <dbl> 45000, 41500, 50400
## $ Gastos    <dbl> 33400, 35400, 35600
## $ Impuestos <dbl> 6450, 6300, 7100

PARTE 6

Tabla_IG <-rbind(Tabla_IG, Agosto)
Tabla_IG <-Tabla_IG %>%
  mutate(Beneficios = Ingresos - Gastos - Impuestos)

head(Tabla_IG)
##      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

PARTE 7

#Balance
Tabla_IG <- Tabla_IG %>%
  mutate(Balance = ifelse(Beneficios > 0, "Positivo", "Negativo"))%>%
  filter(Balance == "Positivo")
head(Tabla_IG)
##      Mes Ingresos Gastos Impuestos Beneficios  Balance
## 1   Mayo    45000  33400      6450       5150 Positivo
## 2  Julio    50400  35600      7100       7700 Positivo
## 3 Agosto    49700  36300      6850       6550 Positivo

Ejercicio 2

Crea un data frame con estos datos. Esta base de datos la puedes descargar desde: https: //github.com/jairoayala1212/Database/blob/main/Medicos.csv. PART 1

library(readxl)

PARTE 1

library(readr)
Medicos_el_csv2 <- read_csv("Medicos_el_csv2.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.
head(Medicos_el_csv2)
## # A tibble: 6 × 6
##   nombre                        edad sexo   peso altura colesterol
##   <chr>                        <dbl> <chr> <dbl>  <dbl>      <dbl>
## 1 Jose Luis Martinez Izquierdo    18 H        85   1.79        182
## 2 Rosa Diaz Daz                   32 M        65   1.73        232
## 3 Javier Garcia Sanchez           24 H        NA   1.81        191
## 4 Carmen Lopez Pinzon             35 M        65   1.7         200
## 5 Marisa Lopez Collado            46 M        51   1.58        148
## 6 Antonio Ruiz Cruz               68 H        66   1.74        249
Medicos2 <- Medicos_el_csv2

PART 2

glimpse(Medicos2)
## Rows: 14
## Columns: 6
## $ nombre     <chr> "Jose Luis Martinez Izquierdo", "Rosa Diaz Daz", "Javier Ga…
## $ edad       <dbl> 18, 32, 24, 35, 46, 68, 51, 22, 35, 46, 53, 58, 27, 20
## $ sexo       <chr> "H", "M", "H", "M", "M", "H", "H", "M", "H", "H", "M", "H",…
## $ peso       <dbl> 85, 65, NA, 65, 51, 66, 62, 60, 90, 75, 55, 78, 109, 61
## $ altura     <dbl> 1.79, 1.73, 1.81, 1.70, 1.58, 1.74, 1.72, 1.66, 1.94, 1.85,…
## $ colesterol <dbl> 182, 232, 191, 200, 148, 249, 276, NA, 241, 280, 262, 198, …
str(Medicos2)
## spc_tbl_ [14 × 6] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ nombre    : chr [1:14] "Jose Luis Martinez Izquierdo" "Rosa Diaz Daz" "Javier Garcia Sanchez" "Carmen Lopez Pinzon" ...
##  $ edad      : num [1:14] 18 32 24 35 46 68 51 22 35 46 ...
##  $ sexo      : chr [1:14] "H" "M" "H" "M" ...
##  $ peso      : num [1:14] 85 65 NA 65 51 66 62 60 90 75 ...
##  $ altura    : num [1:14] 1.79 1.73 1.81 1.7 1.58 1.74 1.72 1.66 1.94 1.85 ...
##  $ colesterol: num [1:14] 182 232 191 200 148 249 276 NA 241 280 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   nombre = col_character(),
##   ..   edad = col_double(),
##   ..   sexo = col_character(),
##   ..   peso = col_double(),
##   ..   altura = col_double(),
##   ..   colesterol = col_double()
##   .. )
##  - attr(*, "problems")=<externalptr>

PART 3 PART 4

Medicos2 <- Medicos2 %>%
  mutate(IMC = peso/altura) %>%
  mutate(Rango_IMC = case_when(
    IMC < 18.5 ~ "Bajo peso",
    IMC > 18.5 & IMC <= 24.5 ~ "Saludable",
    IMC > 24.5 & IMC <= 30 ~ "Sobrepeso",
    IMC > 30 ~ "Obeso"
  ))
head(Medicos2)
## # A tibble: 6 × 8
##   nombre                      edad sexo   peso altura colesterol   IMC Rango_IMC
##   <chr>                      <dbl> <chr> <dbl>  <dbl>      <dbl> <dbl> <chr>    
## 1 Jose Luis Martinez Izquie…    18 H        85   1.79        182  47.5 Obeso    
## 2 Rosa Diaz Daz                 32 M        65   1.73        232  37.6 Obeso    
## 3 Javier Garcia Sanchez         24 H        NA   1.81        191  NA   <NA>     
## 4 Carmen Lopez Pinzon           35 M        65   1.7         200  38.2 Obeso    
## 5 Marisa Lopez Collado          46 M        51   1.58        148  32.3 Obeso    
## 6 Antonio Ruiz Cruz             68 H        66   1.74        249  37.9 Obeso

PART 5

#Reordenar columnas
Medicos2 <- Medicos2 %>%
  select(sexo, edad, peso, altura, colesterol, IMC, Rango_IMC)

PART 6

#Eliminar filas con datos faltantes
Medicos2 <- Medicos2 %>%
  drop_na(colesterol)
head(Medicos2)
## # A tibble: 6 × 7
##   sexo   edad  peso altura colesterol   IMC Rango_IMC
##   <chr> <dbl> <dbl>  <dbl>      <dbl> <dbl> <chr>    
## 1 H        18    85   1.79        182  47.5 Obeso    
## 2 M        32    65   1.73        232  37.6 Obeso    
## 3 H        24    NA   1.81        191  NA   <NA>     
## 4 M        35    65   1.7         200  38.2 Obeso    
## 5 M        46    51   1.58        148  32.3 Obeso    
## 6 H        68    66   1.74        249  37.9 Obeso

PART 7

#Ordenar por nombre
Medicos_nombre <- Medicos_el_csv2 %>%
  arrange(nombre)

PART 8

#Base de datos solo mujeres
Medicos_mujeres <- Medicos2 %>%
  filter(sexo == "M")

PART 9

#Base de datos hombres >30
Medicos_hombres30 <- Medicos2 %>%
  filter(sexo == "H") %>%
  filter(edad > 30)

PART 10

#Base de datos anónima
Medicos_anon <- Medicos_el_csv2 %>%
  select(-nombre)