Taller R - Metodologías de investigación en transporte

Lectura de la base de datos

En esta sección cargamos las librerías necesarias y leemos el archivo Excel.

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.4     
## ── 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
library(readxl)
library(tinytex)

Leer la base de datos

taxi_data <- read_excel("C:/Users/tomas/Documents/UniAndes/MCIAM/1. Primer Semestre/Metodologías de investigación en transporte/Taller R/Tarea 2_TAXI _300.xlsx")

head(taxi_data)

1) Promedio de ganancias según nivel educativo y género

Se agrupa por educ_level y gender. Se calcula el promedio de gross_rev1 omitiendo valores faltantes. prom_ganancias muestra la ganancia promedio para cada combinación de nivel educativo y género.

prom_ganancias <- taxi_data %>%
  group_by(educ_level, gender) %>%
  summarise(
    prom_ganancias = mean(gross_rev1, na.rm = TRUE)
  )
## `summarise()` has grouped output by 'educ_level'. You can override using the
## `.groups` argument.
prom_ganancias

2) Para taxistas que trabajan de noche (daynight = 1)

Primero se filtra la base para considerar solo DayNight_oper == 1. Con summarise() se obtienen los promedios de distancia y consumo de combustible. Luego, se agrupa por educ_level, y se hace un conteo de casos con n().

prom_dist_noche <- taxi_data %>%
  filter(DayNight_oper == 1) %>%
  summarise(
    prom_dist = mean(dist_shift, na.rm = TRUE)
  )

prom_dist_noche
prom_fuel_noche <- taxi_data %>%
  filter(DayNight_oper == 1) %>%
  summarise(
    prom_fuel = mean(fuel_exp, na.rm = TRUE)
  )

prom_fuel_noche
taxi_noche <- taxi_data %>%
  filter(DayNight_oper == 1) %>%           
  group_by(educ_level) %>%                
  summarise(
    taxis     = n()
  )

taxi_noche

3) Comparación de experiencia y edad promedio según equipo de radio y nivel educativo

Se agrupa por radio_equip y educ_level respectivamente. Se calcula en cada caso la experiencia promedio y la edad promedio.

comp_radio <- taxi_data %>%
  group_by(radio_equip) %>%
  summarise(
    prom_exp = mean(exper, na.rm = TRUE),
    prom_age   = mean(age, na.rm = TRUE)
  )

comp_radio
comp_educ <- taxi_data %>%
  group_by(educ_level) %>%
  summarise(
    prom_exp = mean(exper, na.rm = TRUE),
    prom_age   = mean(age, na.rm = TRUE)
  )

comp_educ

4) Taxistas mayores de 40 años

Se filtra la base por age > 40. Se agrupa por educ_level y se calcula la distancia promedio (prom_dist). Luego se cuenta cuántos tienen equipo de radio (total_radio) y se saca la ganancia promedio (prom_ganancia).

dist_educ_mayores40 <- taxi_data %>%
  filter(age > 40) %>%
  group_by(educ_level) %>%
  summarise(
    prom_dist = mean(dist_shift, na.rm = TRUE)
  )

dist_educ_mayores40
radio_mayores40 <- taxi_data %>%
  filter(age > 40) %>%
  summarise(
    total_radio = sum(radio_equip == 1, na.rm = TRUE)
  )

radio_mayores40
ganancia_mayores40 <- taxi_data %>%
  filter(age > 40) %>%
  summarise(
    prom_ganancia = mean(gross_rev1, na.rm = TRUE)
  )

ganancia_mayores40

Taller GGPLOT

library(ggplot2)
taxi_plot <- read_excel("C:/Users/tomas/Documents/UniAndes/MCIAM/1. Primer Semestre/Metodologías de investigación en transporte/Taller R/Tarea 2_TAXI _300_taller 1.xlsx")
head(taxi_plot)

Análisis de rentabilidad por tipo de combustible

¿Qué tanto influye el tipo de combustible en la rentabilidad del conductor? Se utiliza gross_rev1 como variable de rentabilidad y fuel_type como tipo de combustible. La variable de fuel_exp sirve para tener en cuenta el gasto de combustible y calcular las márgenes de eficiencia económica para cada tipo de combustible.

ggplot(taxi_plot, aes(x = fuel_type, y = gross_rev1)) +
  geom_boxplot() +
  labs(title = "Ganancias totales por tipo de combustible",
       x = "Tipo de combustible",
       y = "Ganancia bruta") +
  theme_minimal()
## Warning: Removed 12 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

taxi_plot <- taxi_plot %>% 
  mutate(
    utilidad = gross_rev1-fuel_exp)

ggplot(taxi_plot, aes(x = fuel_type, y = utilidad)) +
  geom_boxplot() +
  labs(title = "Rentabilidad por tipo de combustible",
       x = "Tipo de combustible",
       y = "Utilidad") +
  theme_minimal()
## Warning: Removed 13 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

taxi_plot <- taxi_plot %>% 
  mutate(
    eficiencia = (fuel_exp/dist_shift))

lklkjh