TAREA 1: Lectura de Archivos, Limpieza y Manejo de Datos

Autor: [Tu Nombre y Matrícula]

Fecha: [Fecha actual]

#file.choose()

Librerías

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

======================

PREGUNTA 1

======================

Leer archivo cars.csv y revisar estructura

mis_datos <- read.csv("C:\\Users\\lechu\\Downloads\\cars.csv")
str(mis_datos)
## 'data.frame':    428 obs. of  15 variables:
##  $ Make       : chr  "Acura" "Acura" "Acura" "Acura" ...
##  $ Model      : chr  "MDX" "RSX Type S 2dr" "TSX 4dr" "TL 4dr" ...
##  $ Type       : chr  "SUV" "Sedan" "Sedan" "Sedan" ...
##  $ Origin     : chr  "Asia" "Asia" "Asia" "Asia" ...
##  $ DriveTrain : chr  "All" "Front" "Front" "Front" ...
##  $ MSRP       : num  36945 23820 26990 33195 43755 ...
##  $ Invoice    : num  33337 21761 24647 30299 39014 ...
##  $ EngineSize : num  3.5 2 2.4 3.2 3.5 3.5 3.2 1.8 1.8 3 ...
##  $ Cylinders  : int  6 4 4 6 6 6 6 4 4 6 ...
##  $ Horsepower : int  265 200 200 270 225 225 290 170 170 220 ...
##  $ MPG_City   : int  17 24 22 20 18 18 17 22 23 20 ...
##  $ MPG_Highway: int  23 31 29 28 24 24 24 31 30 28 ...
##  $ Weight     : int  4451 2778 3230 NA 3880 3893 3153 3252 3638 3462 ...
##  $ Wheelbase  : int  106 101 105 108 115 115 100 104 105 104 ...
##  $ Length     : int  189 172 183 186 197 197 174 179 180 179 ...

======================

PREGUNTA 2

======================

Reemplazar valores faltantes (NA) por la media de cada columna numérica

mis_datos <- mis_datos %>%
  mutate(across(where(is.numeric), ~ifelse(is.na(.), mean(., na.rm = TRUE), .)))

======================

PREGUNTA 3

======================

¿Qué marca produce más vehículos y qué marca produce menos?

produccion_por_marca <- mis_datos %>%
  count(Make, sort = TRUE)

marca_mas <- produccion_por_marca %>% slice_max(n, n = 1)
marca_menos <- produccion_por_marca %>% slice_min(n, n = 1)

print("Marca que produce más vehículos:")
## [1] "Marca que produce más vehículos:"
print(marca_mas)
##     Make  n
## 1 Toyota 28
print("Marca que produce menos vehículos:")
## [1] "Marca que produce menos vehículos:"
print(marca_menos)
##     Make n
## 1 Hummer 1

======================

PREGUNTA 4

======================

Cuántos autos se producen por región según tipo de transmisión

produccion_por_region_drive <- mis_datos %>%
  group_by(Origin, DriveTrain) %>%
  summarise(total = n())
## `summarise()` has grouped output by 'Origin'. You can override using the
## `.groups` argument.
print(produccion_por_region_drive)
## # A tibble: 9 × 3
## # Groups:   Origin [3]
##   Origin DriveTrain total
##   <chr>  <chr>      <int>
## 1 Asia   All           34
## 2 Asia   Front         99
## 3 Asia   Rear          25
## 4 Europe All           36
## 5 Europe Front         37
## 6 Europe Rear          50
## 7 USA    All           22
## 8 USA    Front         90
## 9 USA    Rear          35

======================

PREGUNTA 5

======================

# Precio sugerido más caro y más barato
precio_max <- max(mis_datos$MSRP, na.rm = TRUE)
precio_min <- min(mis_datos$MSRP, na.rm = TRUE)

# Convertir columnas de MPG a numéricas (por si vienen como texto)
mis_datos$MPG_City <- as.numeric(as.character(mis_datos$MPG_City))
mis_datos$MPG_Highway <- as.numeric(as.character(mis_datos$MPG_Highway))

# Revisar si hubo advertencias al convertir
# (valores no numéricos se volverán NA)
# summary(mis_datos$MPG_City)

# Millas por galón promedio ciudad y carretera
mpg_ciudad_prom <- mean(mis_datos$MPG_City, na.rm = TRUE)
mpg_carretera_prom <- mean(mis_datos$MPG_Highway, na.rm = TRUE)

# Imprimir resultados
cat("Precio sugerido más caro:", precio_max, "\n")
## Precio sugerido más caro: 192465
cat("Precio sugerido más barato:", precio_min, "\n")
## Precio sugerido más barato: 10280
cat("MPG promedio ciudad:", mpg_ciudad_prom, "\n")
## MPG promedio ciudad: 20.06573
cat("MPG promedio carretera:", mpg_carretera_prom, "\n")
## MPG promedio carretera: 26.84038

======================

PREGUNTA 6

======================

# Seleccionar columnas específicas y filtrar solo autos con transmisión delantera
mis_nuevos_datos <- mis_datos %>%
  select(Make, Model, Type, Origin, DriveTrain, MSRP, Weight, Wheelbase, Length) %>%
  filter(DriveTrain == "Front")

======================

PREGUNTA 7

======================

# Crear nuevas variables: peso en kilos, Wheelbase y Length en centímetros
mis_nuevos_datos <- mis_nuevos_datos %>%
  mutate(
    Weight_kilo = Weight * 0.453592,        # 1 libra = 0.453592 kg
    Wheelbase_cm = Wheelbase * 2.54,        # 1 pulgada = 2.54 cm
    Length_cm = Length * 2.54               # 1 pulgada = 2.54 cm
  )

# Mostrar las primeras observaciones
head(mis_nuevos_datos)
##    Make                   Model  Type Origin DriveTrain  MSRP   Weight
## 1 Acura          RSX Type S 2dr Sedan   Asia      Front 23820 2778.000
## 2 Acura                 TSX 4dr Sedan   Asia      Front 26990 3230.000
## 3 Acura                  TL 4dr Sedan   Asia      Front 33195 3578.229
## 4 Acura              3.5 RL 4dr Sedan   Asia      Front 43755 3880.000
## 5 Acura 3.5 RL w/Navigation 4dr Sedan   Asia      Front 46100 3893.000
## 6  Audi             A4 1.8T 4dr Sedan Europe      Front 25940 3252.000
##   Wheelbase Length Weight_kilo Wheelbase_cm Length_cm
## 1       101    172    1260.079       256.54    436.88
## 2       105    183    1465.102       266.70    464.82
## 3       108    186    1623.056       274.32    472.44
## 4       115    197    1759.937       292.10    500.38
## 5       115    197    1765.834       292.10    500.38
## 6       104    179    1475.081       264.16    454.66

======================

PREGUNTA 8

======================

# Crear variable opinion basada en el precio sugerido (MSRP)
mis_nuevos_datos <- mis_nuevos_datos %>%
  mutate(
    opinion = case_when(
      MSRP > 60000 ~ "Expensive",
      MSRP >= 30000 & MSRP <= 60000 ~ "Normal",
      MSRP < 30000 ~ "Inexpensive"
    )
  )

# Mostrar algunas filas finales
head(mis_nuevos_datos)
##    Make                   Model  Type Origin DriveTrain  MSRP   Weight
## 1 Acura          RSX Type S 2dr Sedan   Asia      Front 23820 2778.000
## 2 Acura                 TSX 4dr Sedan   Asia      Front 26990 3230.000
## 3 Acura                  TL 4dr Sedan   Asia      Front 33195 3578.229
## 4 Acura              3.5 RL 4dr Sedan   Asia      Front 43755 3880.000
## 5 Acura 3.5 RL w/Navigation 4dr Sedan   Asia      Front 46100 3893.000
## 6  Audi             A4 1.8T 4dr Sedan Europe      Front 25940 3252.000
##   Wheelbase Length Weight_kilo Wheelbase_cm Length_cm     opinion
## 1       101    172    1260.079       256.54    436.88 Inexpensive
## 2       105    183    1465.102       266.70    464.82 Inexpensive
## 3       108    186    1623.056       274.32    472.44      Normal
## 4       115    197    1759.937       292.10    500.38      Normal
## 5       115    197    1765.834       292.10    500.38      Normal
## 6       104    179    1475.081       264.16    454.66 Inexpensive