MemeroSerero

Ruru H Project 3 Code

Aug 4th, 2024
401
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 7.31 KB | None | 0 0
  1. ---
  2. title: "Project 3"
  3. author: "Ruru Group E"
  4. date: "2024-08-03"
  5. output: html_document
  6. ---
  7.  
  8. ```{r setup, include=FALSE}
  9. knitr::opts_chunk$set(echo = TRUE)
  10. library(readxl)
  11. library(dplyr)
  12. library(ggplot2)
  13. ```
  14.  
  15.  
  16. ```{r}
  17. vehicles <- read.csv("VehicleYear-2024.csv")
  18.  
  19. auckland_vehicles <- vehicles %>%
  20.   filter(TLA == "AUCKLAND")
  21.  
  22. auckland_vehicles <- auckland_vehicles %>%
  23.   mutate(Fuel_Type = case_when(
  24.     grepl("PETROL HYBRID|PLUGIN PETROL HYBRID", MOTIVE_POWER, ignore.case = TRUE) ~ "Petrol_Hybrid",
  25.     grepl("PETROL", MOTIVE_POWER, ignore.case = TRUE) ~ "Petrol",
  26.     grepl("DIESEL", MOTIVE_POWER, ignore.case = TRUE) ~ "Diesel",
  27.     TRUE ~ "Other"
  28.   ))
  29.  
  30.  
  31. auckland_vehicles <- auckland_vehicles %>%
  32.   mutate(CO2_Emissions_g_per_km = case_when(
  33.     Fuel_Type == "Petrol" ~ (8.5 * 2.3 * 1000) / 100,        # Convert to g/km
  34.     Fuel_Type == "Diesel" ~ (6.5 * 2.7 * 1000) / 100,        # Convert to g/km
  35.     Fuel_Type == "Petrol_Hybrid" ~ (4.0 * 2.3 * 1000) / 100, # Convert to g/km
  36.     TRUE ~ NA_real_
  37.   ))
  38.  
  39.  
  40. auckland_vehicles <- auckland_vehicles %>%
  41.   mutate(CO2_Emissions_g_per_passenger_km = CO2_Emissions_g_per_km / 1.5)
  42.  
  43. average_auckland_co2_emissions <- auckland_vehicles %>%
  44.   filter(Fuel_Type %in% c("Petrol", "Diesel", "Petrol_Hybrid")) %>%
  45.   group_by(Fuel_Type) %>%
  46.   summarise(Average_CO2_Emissions_g_per_passenger_km = mean(CO2_Emissions_g_per_passenger_km, na.rm = TRUE)) %>%
  47.   mutate(Model = paste("Car (", Fuel_Type, ")", sep = "")) %>%
  48.   select(Model, Average_CO2_Emissions_g_per_passenger_km)
  49.  
  50. Make <- c("BMW", "CHEVROLET", "CHEVROLET", "NISSAN", "MITSUBISHI", "SKODA", "SKODA", "TOYOTA", "TOYOTA", "FORD", "HONDA")
  51. Model <- c("316I", "OPTRA", "NULL", "SUNNY", "LANCER", "OCTAVIA", "OCTAVIA", "COROLLA", "COROLLA", "RANGER", "CR-V")
  52. Condition <- c("Used", "Used", "Used", "Not Specified", "Used", "Used", "Used", "New", "New", "New", "NULL")
  53. Body_Type <- c("S.WAGON", "SALOON", "S.WAGON", "SALOON", "SALOON", "SALOON", "SALOON", "S.WAGON", "SALOON", "VAN", "S.WAGON")
  54. Engine_CC <- c(1596, 1799, 1799, 1970, 1600, 1800, 1800, 1970, 2000, 2500, 1970)
  55. Fuel_Type <- c("Petrol", "Petrol", "Petrol", "Diesel", "Diesel", "Diesel", "Diesel", "Diesel", "Petrol", "Petrol", "Diesel")
  56. Model_Year <- c(1989, 2005, 2005, 1998, 1998, 2004, 2005, 1998, 2005, 2005, 1998)
  57. Registration_Date <- c(2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005, 2005)
  58. L_per_100km <- c(7.5, 6.2, 6.2, 6.6, 6.9, 7.0, 7.0, 7.0, 8.0, 7.0, 9.3)
  59. CO2 <- c(176, 145, 145, 177, 185, 188, 188, 188, 188, 170, 217)
  60.  
  61. bus_data <- data.frame(Make, Model, Condition, Body_Type, Engine_CC, Fuel_Type, Model_Year, Registration_Date, L_per_100km, CO2)
  62.  
  63. filtered_buses <- bus_data %>%
  64.   filter(Fuel_Type %in% c("Petrol", "Diesel"))
  65.  
  66. filtered_buses <- filtered_buses %>%
  67.   mutate(CO2_Emissions_g_per_passenger_km = CO2 / 30)
  68.  
  69. average_bus_co2_emissions <- filtered_buses %>%
  70.   group_by(Fuel_Type) %>%
  71.   summarise(Average_CO2_Emissions_g_per_passenger_km = mean(CO2_Emissions_g_per_passenger_km, na.rm = TRUE)) %>%
  72.   mutate(Model = paste("Bus (", Fuel_Type, ")", sep = "")) %>%
  73.   select(Model, Average_CO2_Emissions_g_per_passenger_km)
  74.  
  75.  
  76. scooter_data <- data.frame(
  77.   Model = c("Gen 2.5", "Gen 3.0"),
  78.   Battery_Capacity_Ah = c(9.6, 15.9),
  79.   Range_km = c(22, 40),
  80.   Voltage_V = 36,
  81.   CO2_Emissions_per_kWh = 500 # g/kWh
  82. )
  83.  
  84.  
  85. scooter_data <- scooter_data %>%
  86.   mutate(Battery_Capacity_kWh = (Battery_Capacity_Ah * Voltage_V) / 1000)
  87.  
  88. scooter_data <- scooter_data %>%
  89.   mutate(Consumption_per_km_kWh = Battery_Capacity_kWh / Range_km)
  90.  
  91.  
  92. scooter_data <- scooter_data %>%
  93.   mutate(CO2_Emissions_per_km_g = Consumption_per_km_kWh * CO2_Emissions_per_kWh)
  94.  
  95.  
  96. average_scooter_emissions <- scooter_data %>%
  97.   summarise(Average_CO2_Emissions_g_per_km = mean(CO2_Emissions_per_km_g))
  98.  
  99.  
  100. electric_scooter_data <- data.frame(
  101.   Model = "Electric Scooters",
  102.   Average_CO2_Emissions_g_per_passenger_km = average_scooter_emissions$Average_CO2_Emissions_g_per_km
  103. )
  104.  
  105.  
  106. other_modes_data <- data.frame(
  107.   Model = c("Walking", "Biking"),
  108.   Average_CO2_Emissions_g_per_passenger_km = c(0, 0)
  109. )
  110.  
  111.  
  112. final_data <- bind_rows(
  113.   average_auckland_co2_emissions,
  114.   average_bus_co2_emissions,
  115.   electric_scooter_data,
  116.   other_modes_data
  117. )
  118.  
  119. print(final_data)
  120.  
  121. ```
  122.  
  123.  
  124.  
  125. ```{r}
  126. data <- data.frame(
  127.   Mode_of_Transport = c('Car (Diesel)', 'Car (Petrol)', 'Car (Petrol_Hybrid)', 'Bus (Diesel)', 'Bus (Petrol)', 'Electric Scooters', 'Walking', 'Biking'),
  128.   Average_CO2_Emissions = c(117.0, 130.333333, 61.333333, 6.35, 5.493333, 7.504773, 0.0, 0.0)
  129. )
  130.  
  131. plot <- ggplot(data, aes(x = Average_CO2_Emissions, y = reorder(Mode_of_Transport, Average_CO2_Emissions), fill = Average_CO2_Emissions)) +
  132.   geom_bar(stat = "identity", color = "black") +  # Add black border to bars
  133.   scale_fill_gradient(low = "green", high = "red", name = "CO2 Emissions (g/km)") +
  134.   labs(title = "Average CO2 Emissions by Mode of Transport (per passenger)",
  135.        x = "Average CO2 Emissions (g/km per passenger)",
  136.        y = "Mode of Transport") +
  137.   theme_minimal() +
  138.   theme(
  139.     plot.title = element_text(hjust = 0.5),
  140.     panel.border = element_rect(color = "black", fill = NA, size = 1)  # Add black border around the plot
  141.   )
  142.  
  143. ggsave("CO2_Emissions_by_Transport_with_Border.png", plot = plot, width = 10, height = 6)
  144.  
  145.  
  146. ```
  147.  
  148.  
  149.  
  150. ## Calories Burnt
  151.  
  152. ```{r}
  153. met_values <- c(
  154.   "Bus" = 1.0,
  155.   "Walking" = 4.0,
  156.   "Car" = 1.0,
  157.   "Electric_Scooter" = 1.0
  158. )
  159.  
  160. distances <- c(
  161.   "Bus" = 3.5,
  162.   "Walking" = 3.3,
  163.   "Car" = 3.2,
  164.   "Electric_Scooter" = 3.9
  165. )
  166.  
  167. speeds <- c(
  168.   "Bus" = 20,
  169.   "Walking" = 5,
  170.   "Car" = 60,
  171.   "Electric_Scooter" = 15
  172. )
  173.  
  174. weight <- 70
  175.  
  176.  
  177. durations <- distances / speeds
  178.  
  179. calories_burned <- met_values * weight * durations
  180.  
  181. calories_data <- data.frame(
  182.   Mode_of_Transport = names(calories_burned),
  183.   Distance_km = distances,
  184.   Duration_hours = durations,
  185.   MET_value = met_values,
  186.   Calories_Burned = calories_burned
  187. )
  188.  
  189. print(calories_data)
  190.  
  191. ```
  192.  
  193. ```{r}
  194. library(ggplot2)
  195.  
  196. calories_data <- data.frame(
  197.   Mode_of_Transport = c("Bus", "Walking", "Car", "Electric_Scooter"),
  198.   Distance_km = c(3.5, 3.3, 3.2, 3.9),
  199.   Duration_hours = c(0.175, 0.66, 0.05333333, 0.26),
  200.   MET_value = c(1, 4, 1, 1),
  201.   Calories_Burned = c(12.25, 184.8, 3.733333, 18.2)
  202. )
  203.  
  204.  
  205. p <- ggplot(calories_data, aes(x = reorder(Mode_of_Transport, -Calories_Burned), y = Calories_Burned, fill = Calories_Burned)) +
  206.   geom_bar(stat = "identity", color = "black", width = 0.7) +
  207.   coord_flip() +
  208.   geom_text(aes(label = round(Calories_Burned, 1)), hjust = -0.1, color = "black", size = 4.5, fontface = "bold") +
  209.   labs(title = "Calories Burned by Mode of Transport",
  210.        x = "Mode of Transport",
  211.        y = "Calories Burned") +
  212.   theme_minimal() +
  213.   theme(
  214.     plot.title = element_text(hjust = 0.5, size = 22, face = "bold"),
  215.     axis.title.x = element_text(size = 18, face = "bold"),
  216.     axis.title.y = element_text(size = 18, face = "bold"),
  217.     axis.text.x = element_text(size = 16),
  218.     axis.text.y = element_text(size = 16),
  219.     panel.grid.major = element_line(color = "gray", size = 0.5),
  220.     panel.grid.minor = element_blank(),
  221.     panel.border = element_rect(color = "black", fill = NA, size = 1)
  222.   ) +
  223.   scale_fill_gradient(low = "green", high = "red", name = "Calories Burned")
  224.  
  225. ggsave("Calories_Burned_by_Transport.png", plot = p, width = 12, height = 8, dpi = 300)
  226.  
  227. ```
  228.  
Advertisement
Add Comment
Please, Sign In to add comment