R/clean_vehicle_data.R

Defines functions clean_vehicle_data

Documented in clean_vehicle_data

#' @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"))
}
lucasjamar/VBZtools documentation built on May 20, 2020, 3:44 a.m.