#' @title Clean vehicle data
#' @description Clean and combine VBZ vehicle data
#' @import data.table
#' @import fst
#' @param import_folder Folder where data is located
#' @param export_folder Folder to export dataset
#' @return CSV file of vehicle data
#' @export
clean_vehicle_data <- function(import_folder, export_folder) {
# Clean folder names
import_folder <- clean_folder(import_folder)
if (is.null(export_folder)) {
export_folder <- import_folder
} else {
export_folder <- clean_folder(export_folder)
}
fahrzeuptyp <- paste0(import_folder, "fahrzeugtyp.csv")
t_fahrzeuge <- paste0(import_folder, "T_Fahrzeuge.csv")
# Merge and clean the vehicle data
fahrzeugtyp <- data.table::fread(fahrzeugtyp)
t_fahrzeuge <- data.table::fread(t_fahrzeuge)
# Assign proper names and doors
fahrzeug_namen <- data.table(
Fahrzeugtypname = c(
"2.21M",
"SÄNFTE",
"2.16M-2.21M",
"2.21M-2.21M",
"2.16M-SÄNFTE",
"COBRA",
"MBUS",
"",
"SBUS",
"GBUS",
"HTROL",
"TROLDG",
"DB"
),
Fahrzeug = c(
"Tram 2000 solo",
"Tram 2000 Sänfte",
"Tram 2000 mit Pony-Anhänger",
"Tram 2000 Doppel (Anh. 2. Führerstand)",
"Tram 2000 Sänfte mit Pony",
"Cobra",
"Midibus (MAN A35)",
"Kleinbus (Mercedes Sprinter)",
"Standardbus (Neoplan)",
"Gelenkbus (Neoplan)",
"Gelenk-Trolleybus (Hess)",
"Doppelgelenktrolleybus (Hess)",
"Bergbahn (Dolderbahn)"
),
n_tueren = c(4, 5, 7, 8, 8, 7, 2, 1, 3, 4, 4, 5, 2)
)
# Manually clean forchbahn vehicle data
fahrzeugtyp[fahrzeug_namen, on = .(Fahrzeugtypname), names(fahrzeug_namen) := mget(names(fahrzeug_namen))]
fahrzeugtyp[t_fahrzeuge, on = .(Fahrzeug), names(t_fahrzeuge) := mget(names(t_fahrzeuge))]
fahrzeugtyp[is.na(Fahrzeug), Fahrzeug := Fahrzeugtypname]
fahrzeugtyp[is.na(FZG), FZG := Fahrzeugtypname]
fahrzeugtyp[Fahrzeug %in% c("FBGTW", "FBTW"), `:=`(Sitzplätze = Sitzplaetze, Kap_2m2 = Gesamtplaetze_2, Kap_4m2 = Gesamtplaetze_4, n_tueren = 2)]
vehicle_info_columns <- c("Sitzplätze", "Kap_2m2", "Kap_4m2", "n_tueren")
fahrzeugtyp[, n_sets := stringr::str_count(Fahrzeug, "FBGTW|FBTW")]
fahrzeugtyp[Fahrzeug %like% "FBGTW", (vehicle_info_columns) := lapply(.SD, max, na.rm = TRUE), .SDcols = vehicle_info_columns]
fahrzeugtyp[Fahrzeug %like% "FBTW", (vehicle_info_columns) := lapply(.SD, max, na.rm = TRUE), .SDcols = vehicle_info_columns]
fahrzeugtyp[Fahrzeug %like% c("FBGTW|FBTW"), (vehicle_info_columns) := lapply(.SD, "*", n_sets), .SDcols = vehicle_info_columns]
fahrzeugtyp <- fahrzeugtyp[, .(Fahrzeugtyp_Id, FZG, Fahrzeug, Sitzplätze, Kap_2m2, Kap_4m2, Niederflur, n_tueren)]
data.table::setnames(fahrzeugtyp, c("Fahrzeug", "Sitzplätze"), c("Fahrzeugtypname", "Sitzplaetze"))
data.table::fwrite(fahrzeugtyp, paste0(export_folder, "vehicle_clean.csv"))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.