A13_MAE118_GR16051

library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tibble)
library(stringr)
library(tidyr)
library(pwt10)
Autos <- mtcars |>
  rownames_to_column(var = "Modelo")

head(Autos)
##              Modelo  mpg cyl disp  hp drat    wt  qsec vs am gear carb
## 1         Mazda RX4 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## 2     Mazda RX4 Wag 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## 3        Datsun 710 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## 4    Hornet 4 Drive 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## 5 Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## 6           Valiant 18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

EJERCICIO 1

A

Autos |>
  filter(mpg>25, wt<2.5)
##           Modelo  mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## 1       Fiat 128 32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## 2    Honda Civic 30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## 3 Toyota Corolla 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## 4      Fiat X1-9 27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## 5  Porsche 914-2 26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## 6   Lotus Europa 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2

B

Autos |>
  select(mpg, hp, wt) |>
  arrange(hp) |>
head(6)
##    mpg hp    wt
## 1 30.4 52 1.615
## 2 24.4 62 3.190
## 3 33.9 65 1.835
## 4 32.4 66 2.200
## 5 27.3 66 1.935
## 6 26.0 91 2.140

C

Autos |>
    select(Modelo, mpg, hp, wt) |>
    mutate(
      kpl = mpg * 0.425144) |>
head(5)
##              Modelo  mpg  hp    wt      kpl
## 1         Mazda RX4 21.0 110 2.620 8.928024
## 2     Mazda RX4 Wag 21.0 110 2.875 8.928024
## 3        Datsun 710 22.8  93 2.320 9.693283
## 4    Hornet 4 Drive 21.4 110 3.215 9.098082
## 5 Hornet Sportabout 18.7 175 3.440 7.950193

D

Autos |>
  select(Modelo, mpg, hp, wt) |>
  summarise(
    Media = mean(mpg),
    Mediana = median(mpg),
    Desviacion_Estandar = sd(mpg)
  )
##      Media Mediana Desviacion_Estandar
## 1 20.09062    19.2            6.026948

E

Ordenados_por_num_de_cilindros <- Autos |>
  group_by(cyl) |>
  summarise(
    Total_filtro = n(),
    Media = mean(mpg),
    Mediana = median(mpg),
    Desviacion_Estandar = sd(mpg)
  ) |>
  arrange(cyl)
head(Ordenados_por_num_de_cilindros)
## # A tibble: 3 × 5
##     cyl Total_filtro Media Mediana Desviacion_Estandar
##   <dbl>        <int> <dbl>   <dbl>               <dbl>
## 1     4           11  26.7    26                  4.51
## 2     6            7  19.7    19.7                1.45
## 3     8           14  15.1    15.2                2.56
pwt<-pwt10::pwt10.01

EJERCICIO 2

A

pwt_latam <- pwt |>
  select(country, isocode) |>
  filter(isocode %in% c(
    "ARG", "BOL", "BRA", "CHL", "COL", "CRI", "CUB", "DOM", "ECU", 
    "SLV", "GTM", "HND", "MEX", "NIC", "PAN", "PRY", "PER", "URY", "VEN"
  ))

head(pwt_latam)
##            country isocode
## ARG-1950 Argentina     ARG
## ARG-1951 Argentina     ARG
## ARG-1952 Argentina     ARG
## ARG-1953 Argentina     ARG
## ARG-1954 Argentina     ARG
## ARG-1955 Argentina     ARG

B

pwt_latam_2019 <- pwt |>
  # 1. Filtrar por los países de Latam y el año 2019
  filter(
    isocode %in% c("ARG", "BOL", "BRA", "CHL", "COL", "CRI", "CUB", "DOM", "ECU", "SLV", "GTM", "HND", "MEX", "NIC", "PAN", "PRY", "PER", "URY", "VEN"),
    year == 2019
  ) |>
  # 2. Calcular el ingreso per cápita para cada país antes de promediar
  mutate(ingreso_pc = rgdpe / pop) |>
  # 3. Calcular los promedios generales de la región
  summarise(
    Ingreso_Per_Capita_Promedio = mean(ingreso_pc, na.rm = TRUE),
    Capital_Humano_Promedio = mean(hc, na.rm = TRUE)
  )

print(pwt_latam_2019)
##   Ingreso_Per_Capita_Promedio Capital_Humano_Promedio
## 1                    14035.52                2.718799

C

pwt_clasificacion <- pwt |>
  filter(
    isocode %in% c("ARG", "BOL", "BRA", "CHL", "COL", "CRI", "CUB", "DOM", "ECU", "SLV", "GTM", "HND", "MEX", "NIC", "PAN", "PRY", "PER", "URY", "VEN"),
    year == 2019) |>
  mutate(ingreso_pc = rgdpe / pop) |>
  # Creando la clasificación del Banco Mundial usando case_when
  mutate(
    Nivel_Ingreso = case_when(
      ingreso_pc < 1026 ~ "bajo",
      ingreso_pc >= 1026 & ingreso_pc <= 3995 ~ "bajo-medio",
      ingreso_pc >= 3996 & ingreso_pc <= 12375 ~ "medio-alto",
      ingreso_pc > 12375 ~ "alto")
  ) |>
  # Seleccionando las columnas clave para ver el resultado
  select(country, isocode, ingreso_pc, Nivel_Ingreso)

print(pwt_clasificacion)
##                                     country isocode ingreso_pc Nivel_Ingreso
## ARG-2019                          Argentina     ARG 22144.5136          alto
## BOL-2019   Bolivia (Plurinational State of)     BOL  8628.5914    medio-alto
## BRA-2019                             Brazil     BRA 14637.6708          alto
## CHL-2019                              Chile     CHL 23595.7012          alto
## COL-2019                           Colombia     COL 13819.8515          alto
## CRI-2019                         Costa Rica     CRI 19249.1699          alto
## DOM-2019                 Dominican Republic     DOM 17766.4031          alto
## ECU-2019                            Ecuador     ECU 11238.1838    medio-alto
## GTM-2019                          Guatemala     GTM  7919.7622    medio-alto
## HND-2019                           Honduras     HND  5296.0503    medio-alto
## MEX-2019                             Mexico     MEX 19308.0740          alto
## NIC-2019                          Nicaragua     NIC  5100.6502    medio-alto
## PAN-2019                             Panama     PAN 29586.3432          alto
## PER-2019                               Peru     PER 12412.8182          alto
## PRY-2019                           Paraguay     PRY 12135.0996    medio-alto
## SLV-2019                        El Salvador     SLV  8331.2985    medio-alto
## URY-2019                            Uruguay     URY 21217.8348          alto
## VEN-2019 Venezuela (Bolivarian Republic of)     VEN   251.3191          bajo

D

# 1. Obtener la clasificación del 2019 de forma directa
pwt_base <- pwt |>
  filter(isocode %in% c("ARG", "BOL", "BRA", "CHL", "COL", "CRI", "CUB", "DOM", "ECU", 
                        "SLV", "GTM", "HND", "MEX", "NIC", "PAN", "PRY", "PER", "URY", "VEN"))

clasificacion <- pwt_base |>
  filter(year == 2019) |>
  mutate(
    ingreso_pc = rgdpe / pop,
    Nivel_Ingreso = case_when(
      ingreso_pc < 1026 ~ "bajo",
      ingreso_pc >= 1026 & ingreso_pc <= 3995 ~ "bajo-medio",
      ingreso_pc >= 3996 & ingreso_pc <= 12375 ~ "medio-alto",
      ingreso_pc > 12375 ~ "alto"
    )
  ) |>
  select(isocode, Nivel_Ingreso)

# 2. Separar los años manualmente sin usar funciones conflictivas
pib_2015 <- pwt_base |> filter(year == 2015) |> select(isocode, rgdpe_2015 = rgdpe)
pib_2019 <- pwt_base |> filter(year == 2019) |> select(isocode, rgdpe_2019 = rgdpe)

# 3. Juntar todo y calcular
Resultado_Final <- pib_2015 |>
  merge(pib_2019, by = "isocode") |>
  merge(clasificacion, by = "isocode") |>
  mutate(Crecimiento = (rgdpe_2019 - rgdpe_2015) / rgdpe_2015) |>
  aggregate(Crecimiento ~ Nivel_Ingreso, data = _, FUN = mean)

# Multiplicar por 100 para ver el porcentaje
Resultado_Final$Crecimiento_Porcentaje <- Resultado_Final$Crecimiento * 100
print(Resultado_Final)
##   Nivel_Ingreso Crecimiento Crecimiento_Porcentaje
## 1          alto   0.1124341               11.24341
## 2          bajo  -0.9530619              -95.30619
## 3    medio-alto   0.1166740               11.66740