#Introduccion

Este análisis explora datos sobre sesiones de carga de vehículos eléctricos (VE) para responder preguntas clave sobre eficiencia, costos y patrones de uso. Utilizando herramientas de R, se busca comprender factores como la relación entre características del vehículo, costos de carga y comportamientos de los usuarios, proporcionando insights útiles para optimizar la infraestructura y la experiencia de carga.

library(readxl)
data<-read_excel("C:/Users/Usuario/Downloads/Carros elec.xlsx")
# Eficiencia
# Creae una nueva columna
data <- data %>%
  mutate(charging_efficiency = `Energy_Consumed_(kWh)` / `Charging_Duration(hours)`)

# Calcular eficiencia
efficiency_by_model <- data %>%
  group_by(`Vehicle Model`) %>%
  summarise(average_efficiency = mean(charging_efficiency, na.rm = TRUE))

print(efficiency_by_model)
## # A tibble: 5 × 2
##   `Vehicle Model` average_efficiency
##   <chr>                        <dbl>
## 1 BMW i3                        26.5
## 2 Chevy Bolt                    24.3
## 3 Hyundai Kona                  24.8
## 4 Nissan Leaf                   27.6
## 5 Tesla Model 3                 28.6
# grafica
ggplot(efficiency_by_model, aes(x = `Vehicle Model`, y = average_efficiency)) +
  geom_bar(stat = "identity") +
  theme_minimal() +
  labs(title = "Eficiencia de carga", x = "modelo de vehiculo", y = "Eficiencia (kWh/horas)")

# Costo y distncia
ggplot(data, aes(x = `Distance Driven (since last charge) (km)`, y = `Charging_Cost(USD)`)) +
  geom_point() +
  geom_smooth(method = "lm", color = "blue") +
  theme_minimal() +
  labs(title = "Relacion entre costo y distancia", x = "Distancia (km)", y = "Costo de carga (USD)")
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 66 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 66 rows containing missing values or values outside the scale range
## (`geom_point()`).

# Costo por usuario
total_cost_by_user <- data %>%
  group_by(`User ID`) %>%
  summarise(total_cost = sum(`Charging_Cost(USD)`, na.rm = TRUE))

print(total_cost_by_user)
## # A tibble: 1,320 × 2
##    `User ID` total_cost
##    <chr>          <dbl>
##  1 User_1         13.1 
##  2 User_10        21.3 
##  3 User_100       28.3 
##  4 User_1000      20.0 
##  5 User_1001      26.5 
##  6 User_1002       8.86
##  7 User_1003      26.6 
##  8 User_1004      13.0 
##  9 User_1005      17.7 
## 10 User_1006       8.16
## # ℹ 1,310 more rows
# Distncia promedio segun vehiculo
avg_distance <- data %>%
  group_by(`Vehicle Model`) %>%
  summarise(avg_distance_traveled = mean(`Distance Driven (since last charge) (km)`, na.rm = TRUE))

print(avg_distance)
## # A tibble: 5 × 2
##   `Vehicle Model` avg_distance_traveled
##   <chr>                           <dbl>
## 1 BMW i3                           147.
## 2 Chevy Bolt                       157.
## 3 Hyundai Kona                     161.
## 4 Nissan Leaf                      146.
## 5 Tesla Model 3                    157.
# grafica
ggplot(avg_distance, aes(x = `Vehicle Model`, y = avg_distance_traveled)) +
  geom_bar(stat = "identity") +
  theme_minimal() +
  labs(title = "Distancia promedio por modelo de vehiculo", x = "Modelo de vehiculo", y = "Distancia promedio (km)")

# Crear la columna de eficiencia de carga
data <- data %>%
  mutate(charging_efficiency = `Energy_Consumed_(kWh)` / `Charging_Duration(hours)`)

# Verificar la relación entre temperatura y eficiencia de carga con un gráfico
ggplot(data, aes(x = `Temperature (°C)`, y = charging_efficiency)) +
  geom_point() +
  geom_smooth(method = "lm", color = "blue") +
  theme_minimal() +
  labs(
    title = "relacion entre temperatura y eficiencia de carga",
    x = "Temperature (°C)",
    y = "Eficiencia de carga (kWh/hora)"
  )
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 66 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 66 rows containing missing values or values outside the scale range
## (`geom_point()`).

# Relación entre el estado de carga inicial y el costo de carga
ggplot(data, aes(x = `State of Charge (Start %)`, y = `Charging_Cost(USD)`)) +
  geom_point(alpha = 0.5) +  # Gráfico de dispersión
  geom_smooth(method = "lm", color = "green") +  # Línea de regresión
  theme_minimal() +
  labs(
    title = "Relacion entre el estado de carga inicial y el costo de carga",
    x = "Estado de carga (% inicial)",
    y = "Costo de carga (USD)"
  )
## `geom_smooth()` using formula = 'y ~ x'

# Calcular la tasa de carga promedio por modelo de vehículo y tipo de cargador
avg_charging_rate <- data %>%
  group_by(`Vehicle Model`, `Charger Type`) %>%
  summarise(avg_charging_rate = mean(`Charging_Rate_(kW)`, na.rm = TRUE))
## `summarise()` has grouped output by 'Vehicle Model'. You can override using the
## `.groups` argument.
# Mostrar los resultados
print(avg_charging_rate)
## # A tibble: 15 × 3
## # Groups:   Vehicle Model [5]
##    `Vehicle Model` `Charger Type`  avg_charging_rate
##    <chr>           <chr>                       <dbl>
##  1 BMW i3          DC Fast Charger              25.6
##  2 BMW i3          Level 1                      26.5
##  3 BMW i3          Level 2                      27.4
##  4 Chevy Bolt      DC Fast Charger              22.5
##  5 Chevy Bolt      Level 1                      26.7
##  6 Chevy Bolt      Level 2                      25.5
##  7 Hyundai Kona    DC Fast Charger              26.7
##  8 Hyundai Kona    Level 1                      26.5
##  9 Hyundai Kona    Level 2                      25.9
## 10 Nissan Leaf     DC Fast Charger              27.6
## 11 Nissan Leaf     Level 1                      26.2
## 12 Nissan Leaf     Level 2                      26.0
## 13 Tesla Model 3   DC Fast Charger              25.1
## 14 Tesla Model 3   Level 1                      24.5
## 15 Tesla Model 3   Level 2                      26.6
# Crear un gráfico de barras para visualizar la información
ggplot(avg_charging_rate, aes(x = `Vehicle Model`, y = avg_charging_rate, fill = `Charger Type`)) +
  geom_bar(stat = "identity", position = "dodge") +
  theme_minimal() +
  labs(
    title = "Promedio de cargar segun tipo de cargador y modelo de vehiculo",
    x = "Vehicle Model",
    y = "Promedio de carga (kW)",
    fill = "Tipode cargador"
  )

#Porcentaje de sesiones de carga por tipo de usuario
user_type_percentage <- data %>%
  group_by(`User Type`) %>%
  summarise(Sessions = n()) %>%
  mutate(Percentage = Sessions / sum(Sessions) * 100)

# Gráfico de pastel para los porcentajes
ggplot(user_type_percentage, aes(x = "", y = Percentage, fill = `User Type`)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y") +
  labs(title = "Porcentaje de Sesiones de Carga por Tipo de Usuario",
       fill = "Tipo de Usuario") +
  theme_void()

# Estado de carga promedio al inicio y final por modelo de vehículo
soc_summary <- data %>%
  group_by(`Vehicle Model`) %>%
  summarise(Avg_SOC_Start = mean(`State of Charge (Start %)`, na.rm = TRUE),
            Avg_SOC_End = mean(`State of Charge (End %)`, na.rm = TRUE))

# Mostrar resultados
print(soc_summary)
## # A tibble: 5 × 3
##   `Vehicle Model` Avg_SOC_Start Avg_SOC_End
##   <chr>                   <dbl>       <dbl>
## 1 BMW i3                   49.8        75.3
## 2 Chevy Bolt               49.4        74.0
## 3 Hyundai Kona             50.5        75.4
## 4 Nissan Leaf              48.1        76.1
## 5 Tesla Model 3            47.8        74.9
# Pregunta 10: Impacto de la capacidad de la batería en la duración de carga
ggplot(data, aes(x = `Battery Capacity (kWh)`, y = `Charging_Duration(hours)`)) +
  geom_point(alpha = 0.5) +
  geom_smooth(method = "lm", color = "blue") +
  labs(title = "Capacidad de Batería vs Duración de Carga",
       x = "Capacidad de Batería (kWh)",
       y = "Duración de Carga (horas)") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

#Eficiencia de carga por segmentos de temperatura y SOC
# Crear columnas de eficiencia y segmentos
data <- data %>%
  mutate(Efficiency_kWh_hour = `Energy_Consumed_(kWh)` / `Charging_Duration(hours)`,
         Temperature_Segment = cut(`Temperature (°C)`,
                                   breaks = c(-Inf, 0, 15, 30, Inf),
                                   labels = c("Below 0°C", "0-15°C", "15-30°C", "Above 30°C")),
         SOC_Segment = cut(`State of Charge (Start %)`,
                           breaks = c(0, 25, 50, 75, 100),
                           labels = c("0-25%", "25-50%", "50-75%", "75-100%")))

# Calcular eficiencia promedio por segmento
efficiency_segments <- data %>%
  group_by(Temperature_Segment, SOC_Segment) %>%
  summarise(Avg_Efficiency = mean(Efficiency_kWh_hour, na.rm = TRUE))
## `summarise()` has grouped output by 'Temperature_Segment'. You can override
## using the `.groups` argument.
# Gráfico de barras
ggplot(efficiency_segments, aes(x = SOC_Segment, y = Avg_Efficiency, fill = Temperature_Segment)) +
  geom_bar(stat = "identity", position = "dodge", color = "black") +
  labs(title = "Eficiencia de Carga por Segmentos de Temperatura y SOC",
       x = "Segmento de Estado de Carga Inicial",
       y = "Eficiencia (kWh/h)",
       fill = "Segmento de Temperatura") +
  theme_minimal()