R/process-data.R

Defines functions process_data

#' @importFrom data.table as.data.table rbindlist :=
process_data <- function(json) {
  data <- json[[1]]
  if (!is.null(data[["unit"]])) {
    unit <- data[["unit"]]
    data[["unit"]] <- NULL
    data <- cbind(data, unit)
  }
  if (!is.null(data[["production_unit"]])) {
    production_unit <- data[["production_unit"]]
    data[["production_unit"]] <- NULL
    data <- cbind(data, production_unit)
  }
  if (is.data.frame(data$values)) {
    data <- as.data.table(data$values)
  } else {
    data <- as.data.table(data)
  }
  if (!is.null(data$values)) {
    values <- rbindlist(l = data$values, idcol = TRUE, fill = TRUE)
    data[, .id := seq_len(.N)]
    data[, values := NULL]
    data[, start_date := NULL]
    data[, end_date := NULL]
    data <- merge(x = data, y = values, by = ".id", all.x = TRUE, all.y = TRUE)
    data <- data[, .id := NULL]
  }
  var_dates <- grep(pattern = "_date$", x = names(data), value = TRUE)
  data <- data[, (var_dates) := lapply(.SD, parse_datetime), .SDcols = var_dates]
  data
}
dreamRs/rte.data documentation built on Oct. 6, 2022, 6:32 p.m.