##
## 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
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)