Skip to contents

The indicator "emissions profile upstream" assesses the transition risk of the upstream products due to their relative carbon footprint to other upstream products. As a default option, each upstream product is compared to the carbon footprint of every other upstream product. Upstream products with a higher carbon footprint face a higher risk. On a company-level, the indicator proxies for the supply chain risk of a company - based on its inputs.

The indicator "emissions profile upstream" is therefore similar to the Product Carbon Transition Risk Indicator, but it focuses on the upstream products and not the product of the company. Upstream products are, for example, resources, packaging materials, energy and enabling services (such as tractor use on farm) to produce the product.

After identifying each carbon footprint for one upstream product, the input products are ranked according to their footprint. The ranking method is explained in the Thresholds section.

After assessing the upstream products' transition risk based on the carbon footprint of each product, they are aggregated at the company-level. We derive what percentage of the upstream products are high, medium and low transition risk.

This indicator consists of 2 broad steps:

  1. Score upstream products: Identifying the upstream products for each product, and calculating the relative carbon footprint per upstream product.

  2. Score companies: Aggregating on the company-level.

The sample data set includes inputs and co2 footprints for each product from Ecoinvent and sectors from Europages. NOTE: the following columns are a completely random selection and do not reflect the true information:

  • co2 footprints (not allowed to share licensed data right now)

  • sectors (as the matching with ecoinvent is not done yet, we do not have one sector per product yet)

Usage

emissions_profile_upstream(
  companies,
  co2,
  low_threshold = 1/3,
  high_threshold = 2/3
)

Arguments

companies, co2

A dataframe like the dataset with a matching name in tiltToyData (see Reference).

low_threshold

A numeric value to segment low and medium emission profile products.

high_threshold

A numeric value to segment medium and high emission profile products.

Value

A data frame with the column companies_id, and the list columns product and company holding the outputs at product and company level. Unnesting product yields a data frame with at least columns companies_id, grouped_by, risk_category. Unnesting company yields a data frame with at least columns companies_id, grouped_by, risk_category, value. Any column in the input datasets ending with *rowid is also passed as is to the output at product level. The exception is any column named exactly rowid– which is a reserved name and throws an error. Note this feature makes no sense at company level because potentially multiple rows in the input datasets are summarized into a single row in the output at company level.

See also

Examples

library(tiltIndicator)
library(tiltToyData)
library(readr)
options(readr.show_col_types = FALSE)

companies <- read_csv(toy_emissions_profile_any_companies())
inputs <- read_csv(toy_emissions_profile_upstream_products_ecoinvent())

both <- emissions_profile_upstream(companies, inputs)

both |> unnest_product()
#> # A tibble: 690 × 8
#>    companies_id        grouped_by        risk_category profile_ranking clustered
#>    <chr>               <chr>             <chr>                   <dbl> <chr>    
#>  1 antimonarchy_canine all               high                    0.938 tent     
#>  2 antimonarchy_canine input_isic_4digit high                    1     tent     
#>  3 antimonarchy_canine input_tilt_subse… high                    1     tent     
#>  4 antimonarchy_canine input_unit        high                    1     tent     
#>  5 antimonarchy_canine input_unit_input… high                    1     tent     
#>  6 antimonarchy_canine input_unit_input… high                    1     tent     
#>  7 celestial_lovebird  all               high                    0.938 table hi…
#>  8 celestial_lovebird  input_isic_4digit high                    1     table hi…
#>  9 celestial_lovebird  input_tilt_subse… high                    1     table hi…
#> 10 celestial_lovebird  input_unit        high                    1     table hi…
#> # ℹ 680 more rows
#> # ℹ 3 more variables: activity_uuid_product_uuid <chr>,
#> #   input_activity_uuid_product_uuid <chr>, input_co2_footprint <dbl>

both |> unnest_company()
#> # A tibble: 1,728 × 4
#>    companies_id        grouped_by           risk_category value
#>    <chr>               <chr>                <chr>         <dbl>
#>  1 antimonarchy_canine all                  high              1
#>  2 antimonarchy_canine all                  medium            0
#>  3 antimonarchy_canine all                  low               0
#>  4 antimonarchy_canine all                  NA                0
#>  5 antimonarchy_canine input_isic_4digit    high              1
#>  6 antimonarchy_canine input_isic_4digit    medium            0
#>  7 antimonarchy_canine input_isic_4digit    low               0
#>  8 antimonarchy_canine input_isic_4digit    NA                0
#>  9 antimonarchy_canine input_tilt_subsector high              1
#> 10 antimonarchy_canine input_tilt_subsector medium            0
#> # ℹ 1,718 more rows