diff --git a/NAMESPACE b/NAMESPACE index f8c8710..358d1a1 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -2,6 +2,7 @@ export(add_benchmark_tr_score) export(add_thresholds_transition_risk) +export(add_transition_risk_category) export(add_transition_risk_score) export(toy_all_uuids_scenario_sectors) importFrom(dplyr,.data) @@ -17,6 +18,7 @@ importFrom(readr,read_csv) importFrom(rlang,abort) importFrom(stats,quantile) importFrom(tibble,tribble) +importFrom(tiltIndicator,categorize_risk) importFrom(tiltIndicator,epa_compute_profile_ranking) importFrom(tiltIndicator,spa_compute_profile_ranking) importFrom(tiltToyData,toy_emissions_profile_products_ecoinvent) diff --git a/R/add_transition_risk_category.R b/R/add_transition_risk_category.R new file mode 100644 index 0000000..619f9d6 --- /dev/null +++ b/R/add_transition_risk_category.R @@ -0,0 +1,43 @@ +#' Adds transition risk categories for transition risk scores +#' +#' @param data A dataframe +#' +#' @keywords internal +#' @return A dataframe. +#' +#' @export +#' +#' @examples +#' library(tiltToyData) +#' library(readr) +#' library(dplyr) +#' options(readr.show_col_types = FALSE) +#' +#' emissions_profile_products <- read_csv(toy_emissions_profile_products_ecoinvent()) +#' all_uuids_scenario_sectors <- read_csv(toy_all_uuids_scenario_sectors()) +#' scenarios <- read_csv(toy_sector_profile_any_scenarios()) +#' +#' transition_risk_thresholds <- add_thresholds_transition_risk( +#' emissions_profile_products, +#' all_uuids_scenario_sectors, +#' scenarios +#' ) +#' +#' output <- add_transition_risk_category(transition_risk_thresholds) +#' output +add_transition_risk_category <- function(data) { + check_crucial_cols(data, c( + col_transition_risk_score(), col_tr_low_threshold(), + col_tr_high_threshold() + )) + + mutate(data, transition_risk_category = ifelse( + is.na(.data[[col_transition_risk_score()]]), + NA, + categorize_risk( + .data[[col_transition_risk_score()]], + .data[[col_tr_low_threshold()]], + .data[[col_tr_high_threshold()]] + ) + )) +} diff --git a/R/col-transition_risk_profile.R b/R/col-transition_risk_profile.R index 56382ea..c3a9b28 100644 --- a/R/col-transition_risk_profile.R +++ b/R/col-transition_risk_profile.R @@ -33,3 +33,15 @@ col_targets <- function() { col_ranking <- function() { "profile_ranking" } + +col_transition_risk_score <- function() { + "transition_risk_score" +} + +col_tr_low_threshold <- function() { + "transition_risk_low_threshold" +} + +col_tr_high_threshold <- function() { + "transition_risk_high_threshold" +} diff --git a/R/tiltTransitionRisk-package.R b/R/tiltTransitionRisk-package.R index fbee90a..212b01e 100644 --- a/R/tiltTransitionRisk-package.R +++ b/R/tiltTransitionRisk-package.R @@ -15,6 +15,7 @@ #' @importFrom rlang abort #' @importFrom stats quantile #' @importFrom tibble tribble +#' @importFrom tiltIndicator categorize_risk #' @importFrom tiltIndicator epa_compute_profile_ranking #' @importFrom tiltIndicator spa_compute_profile_ranking #' @importFrom tiltToyData toy_emissions_profile_products_ecoinvent diff --git a/man/add_transition_risk_category.Rd b/man/add_transition_risk_category.Rd new file mode 100644 index 0000000..3acc236 --- /dev/null +++ b/man/add_transition_risk_category.Rd @@ -0,0 +1,37 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/add_transition_risk_category.R +\name{add_transition_risk_category} +\alias{add_transition_risk_category} +\title{Adds transition risk categories for transition risk scores} +\usage{ +add_transition_risk_category(data) +} +\arguments{ +\item{data}{A dataframe} +} +\value{ +A dataframe. +} +\description{ +Adds transition risk categories for transition risk scores +} +\examples{ +library(tiltToyData) +library(readr) +library(dplyr) +options(readr.show_col_types = FALSE) + +emissions_profile_products <- read_csv(toy_emissions_profile_products_ecoinvent()) +all_uuids_scenario_sectors <- read_csv(toy_all_uuids_scenario_sectors()) +scenarios <- read_csv(toy_sector_profile_any_scenarios()) + +transition_risk_thresholds <- add_thresholds_transition_risk( + emissions_profile_products, + all_uuids_scenario_sectors, + scenarios +) + +output <- add_transition_risk_category(transition_risk_thresholds) +output +} +\keyword{internal} diff --git a/tests/testthat/test-add_transition_risk_category.R b/tests/testthat/test-add_transition_risk_category.R new file mode 100644 index 0000000..7f24a36 --- /dev/null +++ b/tests/testthat/test-add_transition_risk_category.R @@ -0,0 +1,23 @@ +test_that("if input data lacks crucial columns, errors gracefully", { + emissions_profile_products <- read_csv(toy_emissions_profile_products_ecoinvent()) + all_uuids_scenario_sectors <- read_csv(toy_all_uuids_scenario_sectors()) + scenarios <- read_csv(toy_sector_profile_any_scenarios()) + + input_data <- add_thresholds_transition_risk( + emissions_profile_products, + all_uuids_scenario_sectors, + scenarios + ) + + crucial <- col_transition_risk_score() + bad <- select(input_data, -all_of(crucial)) + expect_error(add_transition_risk_category(bad), crucial) + + crucial <- col_tr_low_threshold() + bad <- select(input_data, -all_of(crucial)) + expect_error(add_transition_risk_category(bad), crucial) + + crucial <- col_tr_high_threshold() + bad <- select(input_data, -all_of(crucial)) + expect_error(add_transition_risk_category(bad), crucial) +})