Ejercicio Uno

  1. Data frame con los datos de la tabla
Tabla <- data.frame(
  Mes= c("Mayo", "Junio", "Julio"), 
  Ingresos= c(45000, 41500, 51200), 
  Gastos= c(33400, 35400, 35600)
)
Tabla
##     Mes Ingresos Gastos
## 1  Mayo    45000  33400
## 2 Junio    41500  35400
## 3 Julio    51200  35600
  1. 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
Tabla2 <- mutate(Tabla, Impuestos= c(6450,6300,7100))
Tabla2
##     Mes Ingresos Gastos Impuestos
## 1  Mayo    45000  33400      6450
## 2 Junio    41500  35400      6300
## 3 Julio    51200  35600      7100

3.Nueva fila con nuevo mes y datos

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ readr     2.1.5
## ✔ ggplot2   3.5.1     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.1
## ── 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
Tabla3 <- Tabla2 %>% add_row( Mes = "Agosto", Ingresos = 49700, Gastos = 36300, Impuestos = 6850)
Tabla3
##      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. Cambio de los ingresos de julio por 50400
Tabla3$Ingresos<-  replace (Tabla3$Ingresos,Tabla3$Ingresos==51200, 50400)
Tabla3
##      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. Nueva columna con los beneficios de cada mes
Tabla3 <- mutate(Tabla3, Beneficios= Ingresos - Gastos - Impuestos)
Tabla3
##      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. Crear nueva columna de tipo factor denominada Balance con dos categorias, Positivo o Negativo
Tabla3 <- Tabla3 %>%
          mutate(Balance = factor(ifelse(Beneficios > 0,"Positivo","Negativo"))) 
Tabla3
##      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 un conjunto de datos para quedarse con los nombres de los meses y los beneficios de los meses con balance positivo.
Tabla_filtrada <- Tabla3 %>%
  filter(Balance == "Positivo") %>%
  select(Mes, Beneficios)
Tabla_filtrada
##      Mes Beneficios
## 1   Mayo       5150
## 2  Julio       7700
## 3 Agosto       6550

Ejercicio 2

library(readr)
url <- "https://raw.githubusercontent.com/jairoayala1212/Database/main/Medicos.csv"
Medicos <- read_csv(url)
## 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.
print(head(Medicos))
## # A tibble: 6 × 6
##   nombre                        edad sexo   peso altura colesterol
##   <chr>                        <dbl> <chr> <dbl>  <dbl>      <dbl>
## 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.7         200
## 5 Marisa López Collado            46 M        51   1.58        148
## 6 Antonio Ruiz Cruz               68 H        66   1.74        249
  1. Encuentre una vision general de todo la base de datos (cantidad de variables, observaciones, tipos de variables, etc).
str(Medicos)
## spc_tbl_ [14 × 6] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ nombre    : chr [1:14] "José Luis Martínez Izquierdo" "Rosa Díaz Díaz" "Javier Garcia Sánchez" "Carmen López Pinzón" ...
##  $ 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>
dim(Medicos) 
## [1] 14  6
colnames(Medicos)
## [1] "nombre"     "edad"       "sexo"       "peso"       "altura"    
## [6] "colesterol"
summary(Medicos)
##     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
  1. Crea una nueva columna con el ındice de masa corporal, usando la siguiente formula:
library(dplyr)
Medicos <- Medicos %>%
  mutate(IMC = peso / (altura^2))
Medicos
## # A tibble: 14 × 7
##    nombre                           edad sexo   peso altura colesterol   IMC
##    <chr>                           <dbl> <chr> <dbl>  <dbl>      <dbl> <dbl>
##  1 José Luis Martínez Izquierdo       18 H        85   1.79        182  26.5
##  2 Rosa Díaz Díaz                     32 M        65   1.73        232  21.7
##  3 Javier Garcia Sánchez              24 H        NA   1.81        191  NA  
##  4 Carmen López Pinzón                35 M        65   1.7         200  22.5
##  5 Marisa López Collado               46 M        51   1.58        148  20.4
##  6 Antonio Ruiz Cruz                  68 H        66   1.74        249  21.8
##  7 Antonio Fernández Ocaña            51 H        62   1.72        276  21.0
##  8 Pilar Martín González              22 M        60   1.66         NA  21.8
##  9 Pedro Gálvez Tenorio               35 H        90   1.94        241  23.9
## 10 Santiago Reillo Manzano            46 H        75   1.85        280  21.9
## 11 Macarena Álvarez Luna              53 M        55   1.62        262  21.0
## 12 José María Sanz                    58 H        78   1.87        198  22.3
## 13 Miguel Angel Cuadrado Gutiérrez    27 H       109   1.98        210  27.8
## 14 Carolina Rubio Moreno              20 M        61   1.77        194  19.5
  1. Crea una nueva variable, denominada obesidad recodificando la columna IMC
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"
  ))
Medicos
## # A tibble: 14 × 8
##    nombre                      edad sexo   peso altura colesterol   IMC obesidad
##    <chr>                      <dbl> <chr> <dbl>  <dbl>      <dbl> <dbl> <chr>   
##  1 José Luis Martínez Izquie…    18 H        85   1.79        182  26.5 Sobrepe…
##  2 Rosa Díaz Díaz                32 M        65   1.73        232  21.7 Saludab…
##  3 Javier Garcia Sánchez         24 H        NA   1.81        191  NA   <NA>    
##  4 Carmen López Pinzón           35 M        65   1.7         200  22.5 Saludab…
##  5 Marisa López Collado          46 M        51   1.58        148  20.4 Saludab…
##  6 Antonio Ruiz Cruz             68 H        66   1.74        249  21.8 Saludab…
##  7 Antonio Fernández Ocaña       51 H        62   1.72        276  21.0 Saludab…
##  8 Pilar Martín González         22 M        60   1.66         NA  21.8 Saludab…
##  9 Pedro Gálvez Tenorio          35 H        90   1.94        241  23.9 Saludab…
## 10 Santiago Reillo Manzano       46 H        75   1.85        280  21.9 Saludab…
## 11 Macarena Álvarez Luna         53 M        55   1.62        262  21.0 Saludab…
## 12 José María Sanz               58 H        78   1.87        198  22.3 Saludab…
## 13 Miguel Angel Cuadrado Gut…    27 H       109   1.98        210  27.8 Sobrepe…
## 14 Carolina Rubio Moreno         20 M        61   1.77        194  19.5 Saludab…
  1. Reordena la base de datos, colocando la columna sexo antes que la columna edad.
Medicos <- Medicos %>%
  select(nombre, sexo, edad, everything()) 
Medicos
## # A tibble: 14 × 8
##    nombre                     sexo   edad  peso altura colesterol   IMC obesidad
##    <chr>                      <chr> <dbl> <dbl>  <dbl>      <dbl> <dbl> <chr>   
##  1 José Luis Martínez Izquie… H        18    85   1.79        182  26.5 Sobrepe…
##  2 Rosa Díaz Díaz             M        32    65   1.73        232  21.7 Saludab…
##  3 Javier Garcia Sánchez      H        24    NA   1.81        191  NA   <NA>    
##  4 Carmen López Pinzón        M        35    65   1.7         200  22.5 Saludab…
##  5 Marisa López Collado       M        46    51   1.58        148  20.4 Saludab…
##  6 Antonio Ruiz Cruz          H        68    66   1.74        249  21.8 Saludab…
##  7 Antonio Fernández Ocaña    H        51    62   1.72        276  21.0 Saludab…
##  8 Pilar Martín González      M        22    60   1.66         NA  21.8 Saludab…
##  9 Pedro Gálvez Tenorio       H        35    90   1.94        241  23.9 Saludab…
## 10 Santiago Reillo Manzano    H        46    75   1.85        280  21.9 Saludab…
## 11 Macarena Álvarez Luna      M        53    55   1.62        262  21.0 Saludab…
## 12 José María Sanz            H        58    78   1.87        198  22.3 Saludab…
## 13 Miguel Angel Cuadrado Gut… H        27   109   1.98        210  27.8 Sobrepe…
## 14 Carolina Rubio Moreno      M        20    61   1.77        194  19.5 Saludab…
  1. Elimina las filas con datos faltantes en la columna colesterol.
Medicos <- Medicos %>%
  filter(!is.na(colesterol))
Medicos
## # A tibble: 13 × 8
##    nombre                     sexo   edad  peso altura colesterol   IMC obesidad
##    <chr>                      <chr> <dbl> <dbl>  <dbl>      <dbl> <dbl> <chr>   
##  1 José Luis Martínez Izquie… H        18    85   1.79        182  26.5 Sobrepe…
##  2 Rosa Díaz Díaz             M        32    65   1.73        232  21.7 Saludab…
##  3 Javier Garcia Sánchez      H        24    NA   1.81        191  NA   <NA>    
##  4 Carmen López Pinzón        M        35    65   1.7         200  22.5 Saludab…
##  5 Marisa López Collado       M        46    51   1.58        148  20.4 Saludab…
##  6 Antonio Ruiz Cruz          H        68    66   1.74        249  21.8 Saludab…
##  7 Antonio Fernández Ocaña    H        51    62   1.72        276  21.0 Saludab…
##  8 Pedro Gálvez Tenorio       H        35    90   1.94        241  23.9 Saludab…
##  9 Santiago Reillo Manzano    H        46    75   1.85        280  21.9 Saludab…
## 10 Macarena Álvarez Luna      M        53    55   1.62        262  21.0 Saludab…
## 11 José María Sanz            H        58    78   1.87        198  22.3 Saludab…
## 12 Miguel Angel Cuadrado Gut… H        27   109   1.98        210  27.8 Sobrepe…
## 13 Carolina Rubio Moreno      M        20    61   1.77        194  19.5 Saludab…
  1. Ordena la base de datos seg´un la columna nombre
Medicos <- Medicos %>%
  arrange(nombre)
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.
Medicos_mujeres <- Medicos %>%
  filter(sexo == "M")
print(head(Medicos_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
Medicos_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.
Medicos_hombres_mayores_30 <- Medicos %>%
  filter(sexo == "H" & edad > 30)
Medicos_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 volviendola anonima (elimina la columna nombre).
Medicos_anonimos <- Medicos %>%
  select(-nombre)
Medicos_anonimos
## # 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