Skip to content
Snippets Groups Projects
title: 'full code'
output:
  html_document:
    toc: yes
    df_print: paged
  bookdown::html_document2:
    toc: yes
    toc_float: yes

Setup

This file contains all code to estimate the European income-stratified footprints and then the European expenditures deciles. There are three code chunks in this 'full code' Rmarkdown file. The first shows the EXIOBASE code, the second the income-stratified-footprints using the EUROSTAT HBS, and the third the estimation of the European expenditure deciles. All three code chunks are currently set to 'eval = FALSE', and the necessary raw data files to run them are not included in the git due to their size. We have also run the first two code chunks on a high-performance cluster computer.

The code in this 'full code' Rmarkdown file writes derived data files to the folder: 'analysis' > 'data' > 'derived'. These files can be accessed there, and own analysis performed on them without running any of the code in this Rmarkdown. The derived data files are used to create the figures in the main paper and SI (the code for the figures can be found directly within the paper and si Rmarkdown files: 'analysis' > 'paper').

To run the code in this 'full code' Rmarkdown file, follow the instructions at the start of each section (before the code chunk) explaining which files must be downloaded from where, and in which folder they should be extracted. Then remove 'eval = FALSE' in the code chunk header before running it.


# first load required R packages

knitr::opts_chunk$set(
  collapse = TRUE,
  warning = FALSE,
  message = FALSE,
  echo = FALSE,
  comment = "#>"
)

if (!require("pacman")) install.packages("pacman")
pacman::p_load(tidyverse,
               janitor,
               readr,
               here,
               wbstats,
               ISOcodes,
               viridis,
               imputeTS,
               hrbrthemes,
               wesanderson,
               glue,
               ggridges,
               patchwork)

EXIOBASE

The EXIOBASE files are publicly available online. For the results in the main paper we use EXIOBASE version3 industry-by-industry, which is available from: https://zenodo.org/record/3583071#.XjC7kSN4wpY [accessed on 12.03.2020]. In the SI, we also show some results from using EXIOBASE version3 product-by-product, which is available from: [accessed on 12.03.2020].

These files are large, global input-output tables, and we performed standard input-output calculations on them to calculate and save total intensity vectors using a high-performance cluster computer. In this document we show the code that was run on the cluster computer, but have not uploaded any EXIOBASE files to the git. Running the first code chunk would require downloading the industry-by-industry version for the years 2005, 2010 and 2015, and the product-by-product version for the years 2005 and 2010.

Each year is available as a .zip file ('IOT_year_ixi' or 'IOT_year_pxp') from the websites above. If the .zip files for the relevant study years and versions have been downloaded, they can be extracted into the 'EXIOBASE' folder in this git, which is found in the 'analysis' > 'preprocessing' folder. We have set 'EXIOBASE' empty for this purpose. Extracting each year into the EXIOBASE folder creates a folder for each year with all of the relevant files for that year and version. All code in this first code chunk leaves all file names as they are after extraction.


# set data directory for EXIOBASE files
data_dir_exiobase = here("analysis", "preprocessing", "EXIOBASE")

##### EXIOBASE industry-by-industry version

# set study years
years_exiobase_ixi = c(2005,2010,2015)

# 'for' loop which writes 'total intensity vectors' (and row-wise breakdowns) for all study satellite extensions and years to 'data_dir_exiobase' using downloaded EXIOBASE files
for (i in years_exiobase_ixi){
  
year_current = i

# read in A table as table
A = read.delim(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/A.txt"),header = F)

# write A table as .csv file
write.csv(A, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/A.csv"))

# read in A table as .csv file and extract the data only (no labels), and convert to numeric
A = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/A.csv",sep = ""),row.names=NULL,as.is=TRUE)[4:7990,4:7990]
A[is.na(A)]=0
A = mapply(A, FUN = as.numeric)
A = matrix(data = A, ncol = 7987, nrow = 7987)

# solve the Leontief inverse
L = solve(diag(dim(A)[1])-A)  
L[is.na(L)]=0

# read in final demand table (Y) as table
FD = read.delim(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/Y.txt"),header = F)

# write final demand table (Y) as .csv file
write.csv(FD, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/Y.csv"))

# read in final demand table as .csv file and extract the production sector labels
Exiobase_T_labels_ixi = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/Y.csv"))[4:7990,1:3]

# write a .csv file with only the production sector labels
write.csv(Exiobase_T_labels_ixi, paste0(data_dir_exiobase, "/Exiobase_T_labels_ixi.csv"))

# read in final demand table as .csv file and extract the final demand category labels
Exiobase_FD_labels_ixi = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/Y.csv"))[1:3,4:346]

# write a .csv file with only the final demand category labels
write.csv(Exiobase_FD_labels_ixi, paste0(data_dir_exiobase, "/Exiobase_FD_labels_ixi.csv"))

# read in final demand table as .csv file and extract the data only (no labels), and convert to numeric
FD = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/Y.csv",sep=""),row.names=NULL,as.is=TRUE)[4:7990,4:346]
FD[is.na(FD)]=0
FD = mapply(FD, FUN = as.numeric)
FD = matrix(data=FD,ncol=343,nrow=7987)

# write a .csv file with final demand data only (no labels)
write.csv(FD, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/FD_",year_current,"_ixi.csv"))

# calculate total output
total_output = L %*% rowSums(FD)

# write total output as a .csv file
write.csv(total_output, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/total_output_",year_current,"_ixi.csv"))

# read in satellite extensions table (F) as table
satellite = read.delim(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/satellite/F.txt"),header = F)

# write satellite extensions table (F) as .csv file
write.csv(satellite, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/satellite/F.csv"))

# read in satellite extensions table (F) as .csv file and extract the data only (no labels), and convert to numeric
satellite = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/satellite/F.csv",sep=""),row.names=NULL,as.is=TRUE)[3:1115,3:7989]
satellite[is.na(satellite)]=0
satellite = mapply(satellite, FUN = as.numeric)
satellite = matrix(data=satellite,ncol=7987,nrow=1113)

# write a .csv file with satellite extensions data only (no labels)
write.csv(satellite, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/satellite/satellite_",year_current,"_ixi.csv"))

# read in satellite extensions on final demand table (F_hh) as table
satellite_FD = read.delim(paste0(data_dir_exiobase, "/IOT_", year_current, "_ixi/satellite/F_hh.txt"),header = F)

# write satellite extensions on final demand table (F_hh) as .csv file
write.csv(satellite_FD, paste0(data_dir_exiobase, "/IOT_", year_current, "_ixi/satellite/F_hh.csv"))

## extract the relevant satellite extensions from the satellite table, calculate the 'total intensity 
## vectors' (and their row-wise breakdowns), and save to 'data_dir_exiobase'

# CO2 - combustion - air
CO2_combustion_air = satellite[24,]
DIV_co2_combustion_air = CO2_combustion_air/total_output
DIV_co2_combustion_air[is.na(DIV_co2_combustion_air)]=0
DIV_co2_combustion_air[DIV_co2_combustion_air == Inf]<-0
TIV_co2_combustion_air = as.vector(DIV_co2_combustion_air) %*% L

write.csv(TIV_co2_combustion_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_combustion_air_",year_current,"_ixi.csv"))

TIV_breakdown_co2_combustion_air = as.vector(DIV_co2_combustion_air) * L
TIV_breakdown_co2_combustion_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_co2_combustion_air)
TIV_country_breakdown_co2_combustion_air_w_labels = t(TIV_breakdown_co2_combustion_air_w_labels %>%
  group_by(V1) %>%
  select(-X,-V2) %>%
  summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_co2_combustion_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_combustion_air_",year_current,"_ixi.csv"))

# CO2 - non-combustion - air
## cement
CO2_noncombustion_cement_air = satellite[93,]
DIV_co2_noncombustion_cement_air = CO2_noncombustion_cement_air/total_output
DIV_co2_noncombustion_cement_air[is.na(DIV_co2_noncombustion_cement_air)]=0
DIV_co2_noncombustion_cement_air[DIV_co2_noncombustion_cement_air == Inf]<-0
TIV_co2_noncombustion_cement_air = as.vector(DIV_co2_noncombustion_cement_air) %*% L

write.csv(TIV_co2_noncombustion_cement_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_noncombustion_cement_air_",year_current,"_ixi.csv"))

TIV_breakdown_co2_noncombustion_cement_air = as.vector(DIV_co2_noncombustion_cement_air) * L
TIV_breakdown_co2_noncombustion_cement_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_co2_noncombustion_cement_air)
TIV_country_breakdown_co2_noncombustion_cement_air_w_labels = t(TIV_breakdown_co2_noncombustion_cement_air_w_labels %>%
                                                        group_by(V1) %>%
                                                        select(-X,-V2) %>%
                                                        summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_co2_noncombustion_cement_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_noncombustion_cement_air_",year_current,"_ixi.csv"))

## lime
CO2_noncombustion_lime_air = satellite[94,]
DIV_co2_noncombustion_lime_air = CO2_noncombustion_lime_air/total_output
DIV_co2_noncombustion_lime_air[is.na(DIV_co2_noncombustion_lime_air)]=0
DIV_co2_noncombustion_lime_air[DIV_co2_noncombustion_lime_air == Inf]<-0
TIV_co2_noncombustion_lime_air = as.vector(DIV_co2_noncombustion_lime_air) %*% L

write.csv(TIV_co2_noncombustion_lime_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_noncombustion_lime_air_",year_current,"_ixi.csv"))

TIV_breakdown_co2_noncombustion_lime_air = as.vector(DIV_co2_noncombustion_lime_air) * L
TIV_breakdown_co2_noncombustion_lime_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_co2_noncombustion_lime_air)
TIV_country_breakdown_co2_noncombustion_lime_air_w_labels = t(TIV_breakdown_co2_noncombustion_lime_air_w_labels %>%
                                                                  group_by(V1) %>%
                                                                  select(-X,-V2) %>%
                                                                  summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_co2_noncombustion_lime_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_noncombustion_lime_air_",year_current,"_ixi.csv"))

# CO2 - agriculture - peat decay - air
CO2_agriculture_peatdecay_air = satellite[428,]
DIV_co2_agriculture_peatdecay_air = CO2_agriculture_peatdecay_air/total_output
DIV_co2_agriculture_peatdecay_air[is.na(DIV_co2_agriculture_peatdecay_air)]=0
DIV_co2_agriculture_peatdecay_air[DIV_co2_agriculture_peatdecay_air == Inf]<-0
TIV_co2_agriculture_peatdecay_air = as.vector(DIV_co2_agriculture_peatdecay_air) %*% L

write.csv(TIV_co2_agriculture_peatdecay_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_agriculture_peatdecay_air_",year_current,"_ixi.csv"))

TIV_breakdown_co2_agriculture_peatdecay_air = as.vector(DIV_co2_agriculture_peatdecay_air) * L
TIV_breakdown_co2_agriculture_peatdecay_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_co2_agriculture_peatdecay_air)
TIV_country_breakdown_co2_agriculture_peatdecay_air_w_labels = t(TIV_breakdown_co2_agriculture_peatdecay_air_w_labels %>%
                                                                  group_by(V1) %>%
                                                                  select(-X,-V2) %>%
                                                                  summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_co2_agriculture_peatdecay_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_agriculture_peatdecay_air_",year_current,"_ixi.csv"))

# CO2 - waste - air
## biogenic
CO2_waste_biogenic_air = satellite[438,]
DIV_co2_waste_biogenic_air = CO2_waste_biogenic_air/total_output
DIV_co2_waste_biogenic_air[is.na(DIV_co2_waste_biogenic_air)]=0
DIV_co2_waste_biogenic_air[DIV_co2_waste_biogenic_air == Inf]<-0
TIV_co2_biogenic_air = as.vector(DIV_co2_waste_biogenic_air) %*% L

write.csv(TIV_co2_biogenic_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_biogenic_air_",year_current,"_ixi.csv"))

TIV_breakdown_co2_biogenic_air = as.vector(DIV_co2_waste_biogenic_air) * L
TIV_breakdown_co2_biogenic_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_co2_biogenic_air)
TIV_country_breakdown_co2_biogenic_air_w_labels = t(TIV_breakdown_co2_biogenic_air_w_labels %>%
                                                                   group_by(V1) %>%
                                                                   select(-X,-V2) %>%
                                                                   summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_co2_biogenic_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_biogenic_air_",year_current,"_ixi.csv"))

## fossil
CO2_waste_fossil_air = satellite[439,]
DIV_co2_waste_fossil_air = CO2_waste_fossil_air/total_output
DIV_co2_waste_fossil_air[is.na(DIV_co2_waste_fossil_air)]=0
DIV_co2_waste_fossil_air[DIV_co2_waste_fossil_air == Inf]<-0
TIV_co2_waste_fossil_air = as.vector(DIV_co2_waste_fossil_air) %*% L

write.csv(TIV_co2_waste_fossil_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_waste_fossil_air_",year_current,"_ixi.csv"))

TIV_breakdown_co2_waste_fossil_air = as.vector(DIV_co2_waste_fossil_air) * L
TIV_breakdown_co2_waste_fossil_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_co2_waste_fossil_air)
TIV_country_breakdown_co2_waste_fossil_air_w_labels = t(TIV_breakdown_co2_waste_fossil_air_w_labels %>%
                                                                   group_by(V1) %>%
                                                                   select(-X,-V2) %>%
                                                                   summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_co2_waste_fossil_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_waste_fossil_air_",year_current,"_ixi.csv"))

# CH4 - combustion - air
CH4_combustion_air = satellite[25,]
CH4_combustion_air = CH4_combustion_air*28
DIV_ch4_combustion_air = CH4_combustion_air/total_output
DIV_ch4_combustion_air[is.na(DIV_ch4_combustion_air)]=0
DIV_ch4_combustion_air[DIV_ch4_combustion_air == Inf]<-0
TIV_ch4_combustion_air = as.vector(DIV_ch4_combustion_air) %*% L

write.csv(TIV_ch4_combustion_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_combustion_air_",year_current,"_ixi.csv"))

TIV_breakdown_ch4_combustion_air = as.vector(DIV_ch4_combustion_air) * L
TIV_breakdown_ch4_combustion_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_ch4_combustion_air)
TIV_country_breakdown_ch4_combustion_air_w_labels = t(TIV_breakdown_ch4_combustion_air_w_labels %>%
                                                        group_by(V1) %>%
                                                        select(-X,-V2) %>%
                                                        summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_combustion_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_combustion_air_",year_current,"_ixi.csv"))

# CH4 - non-combustion - air
## gas
CH4_noncombustion_gas_air = satellite[68,]
CH4_noncombustion_gas_air = CH4_noncombustion_gas_air*28
DIV_ch4_noncombustion_gas_air = CH4_noncombustion_gas_air/total_output
DIV_ch4_noncombustion_gas_air[is.na(DIV_ch4_noncombustion_gas_air)]=0
DIV_ch4_noncombustion_gas_air[DIV_ch4_noncombustion_gas_air == Inf]<-0
TIV_ch4_noncombustion_gas_air = as.vector(DIV_ch4_noncombustion_gas_air) %*% L

write.csv(TIV_ch4_noncombustion_gas_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_gas_air_",year_current,"_ixi.csv"))

TIV_breakdown_ch4_noncombustion_gas_air = as.vector(DIV_ch4_noncombustion_gas_air) * L
TIV_breakdown_ch4_noncombustion_gas_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_ch4_noncombustion_gas_air)
TIV_country_breakdown_ch4_noncombustion_gas_air_w_labels = t(TIV_breakdown_ch4_noncombustion_gas_air_w_labels %>%
                                                        group_by(V1) %>%
                                                        select(-X,-V2) %>%
                                                        summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_gas_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_gas_air_",year_current,"_ixi.csv"))

## oil
CH4_noncombustion_oil_air = satellite[69,]
CH4_noncombustion_oil_air = CH4_noncombustion_oil_air*28
DIV_ch4_noncombustion_oil_air = CH4_noncombustion_oil_air/total_output
DIV_ch4_noncombustion_oil_air[is.na(DIV_ch4_noncombustion_oil_air)]=0
DIV_ch4_noncombustion_oil_air[DIV_ch4_noncombustion_oil_air == Inf]<-0
TIV_ch4_noncombustion_oil_air = as.vector(DIV_ch4_noncombustion_oil_air) %*% L

write.csv(TIV_ch4_noncombustion_oil_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_oil_air_",year_current,"_ixi.csv"))

TIV_breakdown_ch4_noncombustion_oil_air = as.vector(DIV_ch4_noncombustion_oil_air) * L
TIV_breakdown_ch4_noncombustion_oil_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_ch4_noncombustion_oil_air)
TIV_country_breakdown_ch4_noncombustion_oil_air_w_labels = t(TIV_breakdown_ch4_noncombustion_oil_air_w_labels %>%
                                                               group_by(V1) %>%
                                                               select(-X,-V2) %>%
                                                               summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_oil_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_oil_air_",year_current,"_ixi.csv"))

## anthracite
CH4_noncombustion_anthracite_air = satellite[70,]
CH4_noncombustion_anthracite_air = CH4_noncombustion_anthracite_air*28
DIV_ch4_noncombustion_anthracite_air = CH4_noncombustion_anthracite_air/total_output
DIV_ch4_noncombustion_anthracite_air[is.na(DIV_ch4_noncombustion_anthracite_air)]=0
DIV_ch4_noncombustion_anthracite_air[DIV_ch4_noncombustion_anthracite_air == Inf]<-0
TIV_ch4_noncombustion_anthracite_air = as.vector(DIV_ch4_noncombustion_anthracite_air) %*% L

write.csv(TIV_ch4_noncombustion_anthracite_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_anthracite_air_",year_current,"_ixi.csv"))

TIV_breakdown_ch4_noncombustion_anthracite_air = as.vector(DIV_ch4_noncombustion_anthracite_air) * L
TIV_breakdown_ch4_noncombustion_anthracite_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_ch4_noncombustion_anthracite_air)
TIV_country_breakdown_ch4_noncombustion_anthracite_air_w_labels = t(TIV_breakdown_ch4_noncombustion_anthracite_air_w_labels %>%
                                                               group_by(V1) %>%
                                                               select(-X,-V2) %>%
                                                               summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_anthracite_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_anthracite_air_",year_current,"_ixi.csv"))

## bituminous coal
CH4_noncombustion_bituminouscoal_air = satellite[71,]
CH4_noncombustion_bituminouscoal_air = CH4_noncombustion_bituminouscoal_air*28
DIV_ch4_noncombustion_bituminouscoal_air = CH4_noncombustion_bituminouscoal_air/total_output
DIV_ch4_noncombustion_bituminouscoal_air[is.na(DIV_ch4_noncombustion_bituminouscoal_air)]=0
DIV_ch4_noncombustion_bituminouscoal_air[DIV_ch4_noncombustion_bituminouscoal_air == Inf]<-0
TIV_ch4_noncombustion_bituminouscoal_air = as.vector(DIV_ch4_noncombustion_bituminouscoal_air) %*% L

write.csv(TIV_ch4_noncombustion_bituminouscoal_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_bituminouscoal_air_",year_current,"_ixi.csv"))

TIV_breakdown_ch4_noncombustion_bituminouscoal_air = as.vector(DIV_ch4_noncombustion_bituminouscoal_air) * L
TIV_breakdown_ch4_noncombustion_bituminouscoal_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_ch4_noncombustion_bituminouscoal_air)
TIV_country_breakdown_ch4_noncombustion_bituminouscoal_air_w_labels = t(TIV_breakdown_ch4_noncombustion_bituminouscoal_air_w_labels %>%
                                                               group_by(V1) %>%
                                                               select(-X,-V2) %>%
                                                               summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_bituminouscoal_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_bituminouscoal_air_",year_current,"_ixi.csv"))

## coking coal
CH4_noncombustion_cokingcoal_air = satellite[72,]
CH4_noncombustion_cokingcoal_air = CH4_noncombustion_cokingcoal_air*28
DIV_ch4_noncombustion_cokingcoal_air = CH4_noncombustion_cokingcoal_air/total_output
DIV_ch4_noncombustion_cokingcoal_air[is.na(DIV_ch4_noncombustion_cokingcoal_air)]=0
DIV_ch4_noncombustion_cokingcoal_air[DIV_ch4_noncombustion_cokingcoal_air == Inf]<-0
TIV_ch4_noncombustion_cokingcoal_air = as.vector(DIV_ch4_noncombustion_cokingcoal_air) %*% L

write.csv(TIV_ch4_noncombustion_cokingcoal_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_cokingcoal_air_",year_current,"_ixi.csv"))

TIV_breakdown_ch4_noncombustion_cokingcoal_air = as.vector(DIV_ch4_noncombustion_cokingcoal_air) * L
TIV_breakdown_ch4_noncombustion_cokingcoal_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_ch4_noncombustion_cokingcoal_air)
TIV_country_breakdown_ch4_noncombustion_cokingcoal_air_w_labels = t(TIV_breakdown_ch4_noncombustion_cokingcoal_air_w_labels %>%
                                                               group_by(V1) %>%
                                                               select(-X,-V2) %>%
                                                               summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_cokingcoal_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_cokingcoal_air_",year_current,"_ixi.csv"))

## lignite
CH4_noncombustion_lignite_air = satellite[73,]
CH4_noncombustion_lignite_air = CH4_noncombustion_lignite_air*28
DIV_ch4_noncombustion_lignite_air = CH4_noncombustion_lignite_air/total_output
DIV_ch4_noncombustion_lignite_air[is.na(DIV_ch4_noncombustion_lignite_air)]=0
DIV_ch4_noncombustion_lignite_air[DIV_ch4_noncombustion_lignite_air == Inf]<-0
TIV_ch4_noncombustion_lignite_air = as.vector(DIV_ch4_noncombustion_lignite_air) %*% L

write.csv(TIV_ch4_noncombustion_lignite_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_lignite_air_",year_current,"_ixi.csv"))

TIV_breakdown_ch4_noncombustion_lignite_air = as.vector(DIV_ch4_noncombustion_lignite_air) * L
TIV_breakdown_ch4_noncombustion_lignite_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_ch4_noncombustion_lignite_air)
TIV_country_breakdown_ch4_noncombustion_lignite_air_w_labels = t(TIV_breakdown_ch4_noncombustion_lignite_air_w_labels %>%
                                                               group_by(V1) %>%
                                                               select(-X,-V2) %>%
                                                               summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_lignite_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_lignite_air_",year_current,"_ixi.csv"))

## subbituminous coal
CH4_noncombustion_subbituminouscoal_air = satellite[74,]
CH4_noncombustion_subbituminouscoal_air = CH4_noncombustion_subbituminouscoal_air*28
DIV_ch4_noncombustion_subbituminouscoal_air = CH4_noncombustion_subbituminouscoal_air/total_output
DIV_ch4_noncombustion_subbituminouscoal_air[is.na(DIV_ch4_noncombustion_subbituminouscoal_air)]=0
DIV_ch4_noncombustion_subbituminouscoal_air[DIV_ch4_noncombustion_subbituminouscoal_air == Inf]<-0
TIV_ch4_noncombustion_subbituminouscoal_air = as.vector(DIV_ch4_noncombustion_subbituminouscoal_air) %*% L

write.csv(TIV_ch4_noncombustion_subbituminouscoal_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_subbituminouscoal_air_",year_current,"_ixi.csv"))

TIV_breakdown_ch4_noncombustion_subbituminouscoal_air = as.vector(DIV_ch4_noncombustion_subbituminouscoal_air) * L
TIV_breakdown_ch4_noncombustion_subbituminouscoal_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_ch4_noncombustion_subbituminouscoal_air)
TIV_country_breakdown_ch4_noncombustion_subbituminouscoal_air_w_labels = t(TIV_breakdown_ch4_noncombustion_subbituminouscoal_air_w_labels %>%
                                                               group_by(V1) %>%
                                                               select(-X,-V2) %>%
                                                               summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_subbituminouscoal_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_subbituminouscoal_air_",year_current,"_ixi.csv"))

## oil refinery
CH4_noncombustion_oilrefinery_air = satellite[75,]
CH4_noncombustion_oilrefinery_air = CH4_noncombustion_oilrefinery_air*28
DIV_ch4_noncombustion_oilrefinery_air = CH4_noncombustion_oilrefinery_air/total_output
DIV_ch4_noncombustion_oilrefinery_air[is.na(DIV_ch4_noncombustion_oilrefinery_air)]=0
DIV_ch4_noncombustion_oilrefinery_air[DIV_ch4_noncombustion_oilrefinery_air == Inf]<-0
TIV_ch4_noncombustion_oilrefinery_air = as.vector(DIV_ch4_noncombustion_oilrefinery_air) %*% L

write.csv(TIV_ch4_noncombustion_oilrefinery_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_oilrefinery_air_",year_current,"_ixi.csv"))

TIV_breakdown_ch4_noncombustion_oilrefinery_air = as.vector(DIV_ch4_noncombustion_oilrefinery_air) * L
TIV_breakdown_ch4_noncombustion_oilrefinery_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_ch4_noncombustion_oilrefinery_air)
TIV_country_breakdown_ch4_noncombustion_oilrefinery_air_w_labels = t(TIV_breakdown_ch4_noncombustion_oilrefinery_air_w_labels %>%
                                                                             group_by(V1) %>%
                                                                             select(-X,-V2) %>%
                                                                             summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_oilrefinery_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_oilrefinery_air_",year_current,"_ixi.csv"))

# CH4 - agriculture - air
CH4_agriculture_air = satellite[427,]
CH4_agriculture_air = CH4_agriculture_air*28
DIV_ch4_agriculture_air = CH4_agriculture_air/total_output
DIV_ch4_agriculture_air[is.na(DIV_ch4_agriculture_air)]=0
DIV_ch4_agriculture_air[DIV_ch4_agriculture_air == Inf]<-0
TIV_ch4_agriculture_air = as.vector(DIV_ch4_agriculture_air) %*% L

write.csv(TIV_ch4_agriculture_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_agriculture_air_",year_current,"_ixi.csv"))

TIV_breakdown_ch4_agriculture_air = as.vector(DIV_ch4_agriculture_air) * L
TIV_breakdown_ch4_agriculture_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_ch4_agriculture_air)
TIV_country_breakdown_ch4_agriculture_air_w_labels = t(TIV_breakdown_ch4_agriculture_air_w_labels %>%
                                                                             group_by(V1) %>%
                                                                             select(-X,-V2) %>%
                                                                             summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_agriculture_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_agriculture_air_",year_current,"_ixi.csv"))

# CH4 - waste - air
CH4_waste_air = satellite[436,]
CH4_waste_air = CH4_waste_air*28
DIV_ch4_waste_air = CH4_waste_air/total_output
DIV_ch4_waste_air[is.na(DIV_ch4_waste_air)]=0
DIV_ch4_waste_air[DIV_ch4_waste_air == Inf]<-0
TIV_ch4_waste_air = as.vector(DIV_ch4_waste_air) %*% L

write.csv(TIV_ch4_waste_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_waste_air_",year_current,"_ixi.csv"))

TIV_breakdown_ch4_waste_air = as.vector(DIV_ch4_waste_air) * L
TIV_breakdown_ch4_waste_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_ch4_waste_air)
TIV_country_breakdown_ch4_waste_air_w_labels = t(TIV_breakdown_ch4_waste_air_w_labels %>%
                                                                             group_by(V1) %>%
                                                                             select(-X,-V2) %>%
                                                                             summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_waste_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_waste_air_",year_current,"_ixi.csv"))

# N2O - combustion - air
N2O_combustion_air = satellite[26,]
N2O_combustion_air = N2O_combustion_air*265
DIV_n2o_combustion_air = N2O_combustion_air/total_output
DIV_n2o_combustion_air[is.na(DIV_n2o_combustion_air)]=0
DIV_n2o_combustion_air[DIV_n2o_combustion_air == Inf]<-0
TIV_n2o_combustion_air = as.vector(DIV_n2o_combustion_air) %*% L

write.csv(TIV_n2o_combustion_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_n2o_CO2eq_combustion_air_",year_current,"_ixi.csv"))

TIV_breakdown_n2o_combustion_air = as.vector(DIV_n2o_combustion_air) * L
TIV_breakdown_n2o_combustion_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_n2o_combustion_air)
TIV_country_breakdown_n2o_combustion_air_w_labels = t(TIV_breakdown_n2o_combustion_air_w_labels %>%
                                                        group_by(V1) %>%
                                                        select(-X,-V2) %>%
                                                        summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_n2o_combustion_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_n2o_CO2eq_combustion_air_",year_current,"_ixi.csv"))

# N2O - agriculture - air
N2O_agriculture_air = satellite[430,]
N2O_agriculture_air = N2O_agriculture_air*265
DIV_n2o_agriculture_air = N2O_agriculture_air/total_output
DIV_n2o_agriculture_air[is.na(DIV_n2o_agriculture_air)]=0
DIV_n2o_agriculture_air[DIV_n2o_agriculture_air == Inf]<-0
TIV_n2o_agriculture_air = as.vector(DIV_n2o_agriculture_air) %*% L

write.csv(TIV_n2o_agriculture_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_n2o_CO2eq_agriculture_air_",year_current,"_ixi.csv"))

TIV_breakdown_n2o_agriculture_air = as.vector(DIV_n2o_agriculture_air) * L
TIV_breakdown_n2o_agriculture_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_n2o_agriculture_air)
TIV_country_breakdown_n2o_agriculture_air_w_labels = t(TIV_breakdown_n2o_agriculture_air_w_labels %>%
                                                                             group_by(V1) %>%
                                                                             select(-X,-V2) %>%
                                                                             summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_n2o_agriculture_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_n2o_CO2eq_agriculture_air_",year_current,"_ixi.csv"))

# SF6 - air
SF6_air = satellite[424,]
SF6_air = SF6_air*23500
DIV_sf6_air = SF6_air/total_output
DIV_sf6_air[is.na(DIV_sf6_air)]=0
DIV_sf6_air[DIV_sf6_air == Inf]<-0
TIV_sf6_air = as.vector(DIV_sf6_air) %*% L

write.csv(TIV_sf6_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_sf6_CO2eq_air_",year_current,"_ixi.csv"))

TIV_breakdown_sf6_air = as.vector(DIV_sf6_air) * L
TIV_breakdown_sf6_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_sf6_air)
TIV_country_breakdown_sf6_air_w_labels = t(TIV_breakdown_sf6_air_w_labels %>%
                                                        group_by(V1) %>%
                                                        select(-X,-V2) %>%
                                                        summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_sf6_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_sf6_CO2eq_air_",year_current,"_ixi.csv"))

# HFC - air
HFC_air = satellite[425,]
DIV_hfc_air = HFC_air/total_output
DIV_hfc_air[is.na(DIV_hfc_air)]=0
DIV_hfc_air[DIV_hfc_air == Inf]<-0
TIV_hfc_air = as.vector(DIV_hfc_air) %*% L

write.csv(TIV_hfc_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_hfc_CO2eq_air_",year_current,"_ixi.csv"))

TIV_breakdown_hfc_air = as.vector(DIV_hfc_air) * L
TIV_breakdown_hfc_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_hfc_air)
TIV_country_breakdown_hfc_air_w_labels = t(TIV_breakdown_hfc_air_w_labels %>%
                                                        group_by(V1) %>%
                                                        select(-X,-V2) %>%
                                                        summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_hfc_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_hfc_CO2eq_air_",year_current,"_ixi.csv"))

# PFC - air
PFC_air = satellite[426,]
DIV_pfc_air = PFC_air/total_output
DIV_pfc_air[is.na(DIV_pfc_air)]=0
DIV_pfc_air[DIV_pfc_air == Inf]<-0
TIV_pfc_air = as.vector(DIV_pfc_air) %*% L

write.csv(TIV_pfc_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_pfc_CO2eq_air_",year_current,"_ixi.csv"))

TIV_breakdown_pfc_air = as.vector(DIV_pfc_air) * L
TIV_breakdown_pfc_air_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_pfc_air)
TIV_country_breakdown_pfc_air_w_labels = t(TIV_breakdown_pfc_air_w_labels %>%
                                             group_by(V1) %>%
                                             select(-X,-V2) %>%
                                             summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_pfc_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_pfc_CO2eq_air_",year_current,"_ixi.csv"))

# Energy carrier - use
energy_carrier_use = satellite[470,]
write.csv(energy_carrier_use, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/satellite/energy_carrier_use_",year_current,"_ixi.csv"))
DIV_e_u = energy_carrier_use/total_output
DIV_e_u[is.na(DIV_e_u)]=0
DIV_e_u[DIV_e_u == Inf]<-0
TIV_e_u = as.vector(DIV_e_u) %*% L

write.csv(TIV_e_u, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_energy_carrier_use_",year_current,"_ixi.csv"))

TIV_breakdown_e_u = as.vector(DIV_e_u) * L
TIV_breakdown_e_u_w_labels = cbind(Exiobase_T_labels_ixi, TIV_breakdown_e_u)
TIV_country_breakdown_e_u_w_labels = t(TIV_breakdown_e_u_w_labels %>%
                                             group_by(V1) %>%
                                             select(-X,-V2) %>%
                                             summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_e_u_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_energy_carrier_use_",year_current,"_ixi.csv"))
}


##### EXIOBASE product-by-product version

# set study years
years_exiobase_pxp = c(2005,2010)

# 'for' loop which writes 'total intensity vectors' (and row-wise breakdowns) for all study satellite extensions and years to 'data_dir_exiobase' using downloaded EXIOBASE files
for (i in years_exiobase_pxp){
  
year_current = i

# read in A table as table
A = read.delim(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/A.txt"),header = F)

# write A table as .csv file
write.csv(A, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/A.csv"))

# read in A table as .csv file and extract the data only (no labels), and convert to numeric
A = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/A.csv",sep = ""),row.names=NULL,as.is=TRUE)[4:9803,4:9803]
A[is.na(A)]=0
A = mapply(A, FUN = as.numeric)
A = matrix(data = A, ncol = 9800, nrow = 9800)

# solve the Leontief inverse
L = solve(diag(dim(A)[1])-A)
L[is.na(L)]=0

# read in final demand table (Y) as table
FD = read.delim(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/Y.txt"),header = F)

# write final demand table (Y) as .csv file
write.csv(FD, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/Y.csv"))

# read in final demand table as .csv file and extract the production sector labels
Exiobase_T_labels_pxp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/Y.csv"))[4:9803,1:3]

# write a .csv file with only the production sector labels
write.csv(Exiobase_T_labels_pxp, paste0(data_dir_exiobase, "/Exiobase_T_labels_pxp.csv"))

# read in final demand table as .csv file and extract the final demand category labels
Exiobase_FD_labels_pxp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/Y.csv"))[1:3,4:346]

# write a .csv file with only the final demand category labels
write.csv(Exiobase_FD_labels_pxp, paste0(data_dir_exiobase, "/Exiobase_FD_labels_pxp.csv"))

# read in final demand table as .csv file and extract the data only (no labels), and convert to numeric
FD = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/Y.csv",sep=""),row.names=NULL,as.is=TRUE)[4:9803,4:346]
FD[is.na(FD)]=0
FD = mapply(FD, FUN = as.numeric)
FD = matrix(data=FD,ncol=343,nrow=9800)

# write a .csv file with final demand data only (no labels)
write.csv(FD, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/FD_",year_current,"_pxp.csv"))

# calculate total output
total_output = L %*% rowSums(FD)

# write total output as a .csv file
write.csv(total_output, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/total_output_",year_current,"_pxp.csv"))

# read in satellite extensions table (F) as table
satellite = read.delim(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/satellite/F.txt"),header = F)

# write satellite extensions table (F) as .csv file
write.csv(satellite, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/satellite/F.csv"))

# read in satellite extensions table (F) as .csv file and extract the data only (no labels), and convert to numeric
satellite = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/satellite/F.csv",sep=""),row.names=NULL,as.is=TRUE)[3:1106,3:9802]
satellite[is.na(satellite)]=0
satellite = mapply(satellite, FUN = as.numeric)
satellite = matrix(data=satellite,ncol=9800,nrow=1104)

# write a .csv file with satellite extensions data only (no labels)
write.csv(satellite, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/satellite/satellite_",year_current,"_pxp.csv"))

# read in satellite extensions on final demand table (F_hh) as table
satellite_FD = read.delim(paste0(data_dir_exiobase, "/IOT_", year_current, "_pxp/satellite/F_hh.txt"),header = F)

# write satellite extensions on final demand table (F_hh) as .csv file
write.csv(satellite_FD, paste0(data_dir_exiobase, "/IOT_", year_current, "_pxp/satellite/F_hh.csv"))

## extract the relevant satellite extensions from the satellite table, calculate the 'total intensity 
## vectors' (and their row-wise breakdowns), and write them as .csv files to 'data_dir_exiobase'

# CO2 - combustion - air
CO2_combustion_air = satellite[24,]
DIV_co2_combustion_air = CO2_combustion_air/total_output
DIV_co2_combustion_air[is.na(DIV_co2_combustion_air)]=0
DIV_co2_combustion_air[DIV_co2_combustion_air == Inf]<-0
TIV_co2_combustion_air = as.vector(DIV_co2_combustion_air) %*% L

write.csv(TIV_co2_combustion_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_co2_combustion_air_",year_current,"_pxp.csv"))

TIV_breakdown_co2_combustion_air = as.vector(DIV_co2_combustion_air) * L
TIV_breakdown_co2_combustion_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_co2_combustion_air)
TIV_country_breakdown_co2_combustion_air_w_labels = t(TIV_breakdown_co2_combustion_air_w_labels %>%
  group_by(V1) %>%
  select(-X,-V2) %>%
  summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_co2_combustion_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_combustion_air_",year_current,"_pxp.csv"))

# CO2 - non-combustion - air
## cement
CO2_noncombustion_cement_air = satellite[93,]
DIV_co2_noncombustion_cement_air = CO2_noncombustion_cement_air/total_output
DIV_co2_noncombustion_cement_air[is.na(DIV_co2_noncombustion_cement_air)]=0
DIV_co2_noncombustion_cement_air[DIV_co2_noncombustion_cement_air == Inf]<-0
TIV_co2_noncombustion_cement_air = as.vector(DIV_co2_noncombustion_cement_air) %*% L

write.csv(TIV_co2_noncombustion_cement_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_co2_noncombustion_cement_air_",year_current,"_pxp.csv"))

TIV_breakdown_co2_noncombustion_cement_air = as.vector(DIV_co2_noncombustion_cement_air) * L
TIV_breakdown_co2_noncombustion_cement_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_co2_noncombustion_cement_air)
TIV_country_breakdown_co2_noncombustion_cement_air_w_labels = t(TIV_breakdown_co2_noncombustion_cement_air_w_labels %>%
                                                                  group_by(V1) %>%
                                                                  select(-X,-V2) %>%
                                                                  summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_co2_noncombustion_cement_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_noncombustion_cement_air_",year_current,"_pxp.csv"))

## lime
CO2_noncombustion_lime_air = satellite[94,]
DIV_co2_noncombustion_lime_air = CO2_noncombustion_lime_air/total_output
DIV_co2_noncombustion_lime_air[is.na(DIV_co2_noncombustion_lime_air)]=0
DIV_co2_noncombustion_lime_air[DIV_co2_noncombustion_lime_air == Inf]<-0
TIV_co2_noncombustion_lime_air = as.vector(DIV_co2_noncombustion_lime_air) %*% L

write.csv(TIV_co2_noncombustion_lime_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_co2_noncombustion_lime_air_",year_current,"_pxp.csv"))

TIV_breakdown_co2_noncombustion_lime_air = as.vector(DIV_co2_noncombustion_lime_air) * L
TIV_breakdown_co2_noncombustion_lime_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_co2_noncombustion_lime_air)
TIV_country_breakdown_co2_noncombustion_lime_air_w_labels = t(TIV_breakdown_co2_noncombustion_lime_air_w_labels %>%
                                                                group_by(V1) %>%
                                                                select(-X,-V2) %>%
                                                                summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_co2_noncombustion_lime_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_noncombustion_lime_air_",year_current,"_pxp.csv"))

# CO2 - agriculture - peat decay - air
CO2_agriculture_peatdecay_air = satellite[428,]
DIV_co2_agriculture_peatdecay_air = CO2_agriculture_peatdecay_air/total_output
DIV_co2_agriculture_peatdecay_air[is.na(DIV_co2_agriculture_peatdecay_air)]=0
DIV_co2_agriculture_peatdecay_air[DIV_co2_agriculture_peatdecay_air == Inf]<-0
TIV_co2_agriculture_peatdecay_air = as.vector(DIV_co2_agriculture_peatdecay_air) %*% L

write.csv(TIV_co2_agriculture_peatdecay_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_co2_agriculture_peatdecay_air_",year_current,"_pxp.csv"))

TIV_breakdown_co2_agriculture_peatdecay_air = as.vector(DIV_co2_agriculture_peatdecay_air) * L
TIV_breakdown_co2_agriculture_peatdecay_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_co2_agriculture_peatdecay_air)
TIV_country_breakdown_co2_agriculture_peatdecay_air_w_labels = t(TIV_breakdown_co2_agriculture_peatdecay_air_w_labels %>%
                                                                   group_by(V1) %>%
                                                                   select(-X,-V2) %>%
                                                                   summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_co2_agriculture_peatdecay_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_agriculture_peatdecay_air_",year_current,"_pxp.csv"))

# CO2 - waste - air
## biogenic
CO2_waste_biogenic_air = satellite[438,]
DIV_co2_waste_biogenic_air = CO2_waste_biogenic_air/total_output
DIV_co2_waste_biogenic_air[is.na(DIV_co2_waste_biogenic_air)]=0
DIV_co2_waste_biogenic_air[DIV_co2_waste_biogenic_air == Inf]<-0
TIV_co2_biogenic_air = as.vector(DIV_co2_waste_biogenic_air) %*% L

write.csv(TIV_co2_biogenic_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_co2_biogenic_air_",year_current,"_pxp.csv"))

TIV_breakdown_co2_biogenic_air = as.vector(DIV_co2_waste_biogenic_air) * L
TIV_breakdown_co2_biogenic_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_co2_biogenic_air)
TIV_country_breakdown_co2_biogenic_air_w_labels = t(TIV_breakdown_co2_biogenic_air_w_labels %>%
                                                      group_by(V1) %>%
                                                      select(-X,-V2) %>%
                                                      summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_co2_biogenic_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_biogenic_air_",year_current,"_pxp.csv"))

## fossil
CO2_waste_fossil_air = satellite[439,]
DIV_co2_waste_fossil_air = CO2_waste_fossil_air/total_output
DIV_co2_waste_fossil_air[is.na(DIV_co2_waste_fossil_air)]=0
DIV_co2_waste_fossil_air[DIV_co2_waste_fossil_air == Inf]<-0
TIV_co2_waste_fossil_air = as.vector(DIV_co2_waste_fossil_air) %*% L

write.csv(TIV_co2_waste_fossil_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_co2_waste_fossil_air_",year_current,"_pxp.csv"))

TIV_breakdown_co2_waste_fossil_air = as.vector(DIV_co2_waste_fossil_air) * L
TIV_breakdown_co2_waste_fossil_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_co2_waste_fossil_air)
TIV_country_breakdown_co2_waste_fossil_air_w_labels = t(TIV_breakdown_co2_waste_fossil_air_w_labels %>%
                                                          group_by(V1) %>%
                                                          select(-X,-V2) %>%
                                                          summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_co2_waste_fossil_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_waste_fossil_air_",year_current,"_pxp.csv"))

# CH4 - combustion - air
CH4_combustion_air = satellite[25,]
CH4_combustion_air = CH4_combustion_air*28
DIV_ch4_combustion_air = CH4_combustion_air/total_output
DIV_ch4_combustion_air[is.na(DIV_ch4_combustion_air)]=0
DIV_ch4_combustion_air[DIV_ch4_combustion_air == Inf]<-0
TIV_ch4_combustion_air = as.vector(DIV_ch4_combustion_air) %*% L

write.csv(TIV_ch4_combustion_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_combustion_air_",year_current,"_pxp.csv"))

TIV_breakdown_ch4_combustion_air = as.vector(DIV_ch4_combustion_air) * L
TIV_breakdown_ch4_combustion_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_ch4_combustion_air)
TIV_country_breakdown_ch4_combustion_air_w_labels = t(TIV_breakdown_ch4_combustion_air_w_labels %>%
                                                        group_by(V1) %>%
                                                        select(-X,-V2) %>%
                                                        summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_combustion_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_combustion_air_",year_current,"_pxp.csv"))

# CH4 - non-combustion - air
## gas
CH4_noncombustion_gas_air = satellite[68,]
CH4_noncombustion_gas_air = CH4_noncombustion_gas_air*28
DIV_ch4_noncombustion_gas_air = CH4_noncombustion_gas_air/total_output
DIV_ch4_noncombustion_gas_air[is.na(DIV_ch4_noncombustion_gas_air)]=0
DIV_ch4_noncombustion_gas_air[DIV_ch4_noncombustion_gas_air == Inf]<-0
TIV_ch4_noncombustion_gas_air = as.vector(DIV_ch4_noncombustion_gas_air) %*% L

write.csv(TIV_ch4_noncombustion_gas_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_gas_air_",year_current,"_pxp.csv"))

TIV_breakdown_ch4_noncombustion_gas_air = as.vector(DIV_ch4_noncombustion_gas_air) * L
TIV_breakdown_ch4_noncombustion_gas_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_ch4_noncombustion_gas_air)
TIV_country_breakdown_ch4_noncombustion_gas_air_w_labels = t(TIV_breakdown_ch4_noncombustion_gas_air_w_labels %>%
                                                               group_by(V1) %>%
                                                               select(-X,-V2) %>%
                                                               summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_gas_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_gas_air_",year_current,"_pxp.csv"))

## oil
CH4_noncombustion_oil_air = satellite[69,]
CH4_noncombustion_oil_air = CH4_noncombustion_oil_air*28
DIV_ch4_noncombustion_oil_air = CH4_noncombustion_oil_air/total_output
DIV_ch4_noncombustion_oil_air[is.na(DIV_ch4_noncombustion_oil_air)]=0
DIV_ch4_noncombustion_oil_air[DIV_ch4_noncombustion_oil_air == Inf]<-0
TIV_ch4_noncombustion_oil_air = as.vector(DIV_ch4_noncombustion_oil_air) %*% L

write.csv(TIV_ch4_noncombustion_oil_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_oil_air_",year_current,"_pxp.csv"))

TIV_breakdown_ch4_noncombustion_oil_air = as.vector(DIV_ch4_noncombustion_oil_air) * L
TIV_breakdown_ch4_noncombustion_oil_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_ch4_noncombustion_oil_air)
TIV_country_breakdown_ch4_noncombustion_oil_air_w_labels = t(TIV_breakdown_ch4_noncombustion_oil_air_w_labels %>%
                                                               group_by(V1) %>%
                                                               select(-X,-V2) %>%
                                                               summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_oil_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_oil_air_",year_current,"_pxp.csv"))

## anthracite
CH4_noncombustion_anthracite_air = satellite[70,]
CH4_noncombustion_anthracite_air = CH4_noncombustion_anthracite_air*28
DIV_ch4_noncombustion_anthracite_air = CH4_noncombustion_anthracite_air/total_output
DIV_ch4_noncombustion_anthracite_air[is.na(DIV_ch4_noncombustion_anthracite_air)]=0
DIV_ch4_noncombustion_anthracite_air[DIV_ch4_noncombustion_anthracite_air == Inf]<-0
TIV_ch4_noncombustion_anthracite_air = as.vector(DIV_ch4_noncombustion_anthracite_air) %*% L

write.csv(TIV_ch4_noncombustion_anthracite_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_anthracite_air_",year_current,"_pxp.csv"))

TIV_breakdown_ch4_noncombustion_anthracite_air = as.vector(DIV_ch4_noncombustion_anthracite_air) * L
TIV_breakdown_ch4_noncombustion_anthracite_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_ch4_noncombustion_anthracite_air)
TIV_country_breakdown_ch4_noncombustion_anthracite_air_w_labels = t(TIV_breakdown_ch4_noncombustion_anthracite_air_w_labels %>%
                                                                      group_by(V1) %>%
                                                                      select(-X,-V2) %>%
                                                                      summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_anthracite_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_anthracite_air_",year_current,"_pxp.csv"))

## bituminous coal
CH4_noncombustion_bituminouscoal_air = satellite[71,]
CH4_noncombustion_bituminouscoal_air = CH4_noncombustion_bituminouscoal_air*28
DIV_ch4_noncombustion_bituminouscoal_air = CH4_noncombustion_bituminouscoal_air/total_output
DIV_ch4_noncombustion_bituminouscoal_air[is.na(DIV_ch4_noncombustion_bituminouscoal_air)]=0
DIV_ch4_noncombustion_bituminouscoal_air[DIV_ch4_noncombustion_bituminouscoal_air == Inf]<-0
TIV_ch4_noncombustion_bituminouscoal_air = as.vector(DIV_ch4_noncombustion_bituminouscoal_air) %*% L

write.csv(TIV_ch4_noncombustion_bituminouscoal_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_bituminouscoal_air_",year_current,"_pxp.csv"))

TIV_breakdown_ch4_noncombustion_bituminouscoal_air = as.vector(DIV_ch4_noncombustion_bituminouscoal_air) * L
TIV_breakdown_ch4_noncombustion_bituminouscoal_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_ch4_noncombustion_bituminouscoal_air)
TIV_country_breakdown_ch4_noncombustion_bituminouscoal_air_w_labels = t(TIV_breakdown_ch4_noncombustion_bituminouscoal_air_w_labels %>%
                                                                          group_by(V1) %>%
                                                                          select(-X,-V2) %>%
                                                                          summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_bituminouscoal_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_bituminouscoal_air_",year_current,"_pxp.csv"))

## coking coal
CH4_noncombustion_cokingcoal_air = satellite[72,]
CH4_noncombustion_cokingcoal_air = CH4_noncombustion_cokingcoal_air*28
DIV_ch4_noncombustion_cokingcoal_air = CH4_noncombustion_cokingcoal_air/total_output
DIV_ch4_noncombustion_cokingcoal_air[is.na(DIV_ch4_noncombustion_cokingcoal_air)]=0
DIV_ch4_noncombustion_cokingcoal_air[DIV_ch4_noncombustion_cokingcoal_air == Inf]<-0
TIV_ch4_noncombustion_cokingcoal_air = as.vector(DIV_ch4_noncombustion_cokingcoal_air) %*% L

write.csv(TIV_ch4_noncombustion_cokingcoal_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_cokingcoal_air_",year_current,"_pxp.csv"))

TIV_breakdown_ch4_noncombustion_cokingcoal_air = as.vector(DIV_ch4_noncombustion_cokingcoal_air) * L
TIV_breakdown_ch4_noncombustion_cokingcoal_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_ch4_noncombustion_cokingcoal_air)
TIV_country_breakdown_ch4_noncombustion_cokingcoal_air_w_labels = t(TIV_breakdown_ch4_noncombustion_cokingcoal_air_w_labels %>%
                                                                      group_by(V1) %>%
                                                                      select(-X,-V2) %>%
                                                                      summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_cokingcoal_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_cokingcoal_air_",year_current,"_pxp.csv"))

## lignite
CH4_noncombustion_lignite_air = satellite[73,]
CH4_noncombustion_lignite_air = CH4_noncombustion_lignite_air*28
DIV_ch4_noncombustion_lignite_air = CH4_noncombustion_lignite_air/total_output
DIV_ch4_noncombustion_lignite_air[is.na(DIV_ch4_noncombustion_lignite_air)]=0
DIV_ch4_noncombustion_lignite_air[DIV_ch4_noncombustion_lignite_air == Inf]<-0
TIV_ch4_noncombustion_lignite_air = as.vector(DIV_ch4_noncombustion_lignite_air) %*% L

write.csv(TIV_ch4_noncombustion_lignite_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_lignite_air_",year_current,"_pxp.csv"))

TIV_breakdown_ch4_noncombustion_lignite_air = as.vector(DIV_ch4_noncombustion_lignite_air) * L
TIV_breakdown_ch4_noncombustion_lignite_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_ch4_noncombustion_lignite_air)
TIV_country_breakdown_ch4_noncombustion_lignite_air_w_labels = t(TIV_breakdown_ch4_noncombustion_lignite_air_w_labels %>%
                                                                   group_by(V1) %>%
                                                                   select(-X,-V2) %>%
                                                                   summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_lignite_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_lignite_air_",year_current,"_pxp.csv"))

## subbituminous coal
CH4_noncombustion_subbituminouscoal_air = satellite[74,]
CH4_noncombustion_subbituminouscoal_air = CH4_noncombustion_subbituminouscoal_air*28
DIV_ch4_noncombustion_subbituminouscoal_air = CH4_noncombustion_subbituminouscoal_air/total_output
DIV_ch4_noncombustion_subbituminouscoal_air[is.na(DIV_ch4_noncombustion_subbituminouscoal_air)]=0
DIV_ch4_noncombustion_subbituminouscoal_air[DIV_ch4_noncombustion_subbituminouscoal_air == Inf]<-0
TIV_ch4_noncombustion_subbituminouscoal_air = as.vector(DIV_ch4_noncombustion_subbituminouscoal_air) %*% L

write.csv(TIV_ch4_noncombustion_subbituminouscoal_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_subbituminouscoal_air_",year_current,"_pxp.csv"))

TIV_breakdown_ch4_noncombustion_subbituminouscoal_air = as.vector(DIV_ch4_noncombustion_subbituminouscoal_air) * L
TIV_breakdown_ch4_noncombustion_subbituminouscoal_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_ch4_noncombustion_subbituminouscoal_air)
TIV_country_breakdown_ch4_noncombustion_subbituminouscoal_air_w_labels = t(TIV_breakdown_ch4_noncombustion_subbituminouscoal_air_w_labels %>%
                                                                             group_by(V1) %>%
                                                                             select(-X,-V2) %>%
                                                                             summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_subbituminouscoal_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_subbituminouscoal_air_",year_current,"_pxp.csv"))

## oil refinery
CH4_noncombustion_oilrefinery_air = satellite[75,]
CH4_noncombustion_oilrefinery_air = CH4_noncombustion_oilrefinery_air*28
DIV_ch4_noncombustion_oilrefinery_air = CH4_noncombustion_oilrefinery_air/total_output
DIV_ch4_noncombustion_oilrefinery_air[is.na(DIV_ch4_noncombustion_oilrefinery_air)]=0
DIV_ch4_noncombustion_oilrefinery_air[DIV_ch4_noncombustion_oilrefinery_air == Inf]<-0
TIV_ch4_noncombustion_oilrefinery_air = as.vector(DIV_ch4_noncombustion_oilrefinery_air) %*% L

write.csv(TIV_ch4_noncombustion_oilrefinery_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_oilrefinery_air_",year_current,"_pxp.csv"))

TIV_breakdown_ch4_noncombustion_oilrefinery_air = as.vector(DIV_ch4_noncombustion_oilrefinery_air) * L
TIV_breakdown_ch4_noncombustion_oilrefinery_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_ch4_noncombustion_oilrefinery_air)
TIV_country_breakdown_ch4_noncombustion_oilrefinery_air_w_labels = t(TIV_breakdown_ch4_noncombustion_oilrefinery_air_w_labels %>%
                                                                       group_by(V1) %>%
                                                                       select(-X,-V2) %>%
                                                                       summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_noncombustion_oilrefinery_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_oilrefinery_air_",year_current,"_pxp.csv"))

# CH4 - agriculture - air
CH4_agriculture_air = satellite[427,]
CH4_agriculture_air = CH4_agriculture_air*28
DIV_ch4_agriculture_air = CH4_agriculture_air/total_output
DIV_ch4_agriculture_air[is.na(DIV_ch4_agriculture_air)]=0
DIV_ch4_agriculture_air[DIV_ch4_agriculture_air == Inf]<-0
TIV_ch4_agriculture_air = as.vector(DIV_ch4_agriculture_air) %*% L

write.csv(TIV_ch4_agriculture_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_agriculture_air_",year_current,"_pxp.csv"))

TIV_breakdown_ch4_agriculture_air = as.vector(DIV_ch4_agriculture_air) * L
TIV_breakdown_ch4_agriculture_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_ch4_agriculture_air)
TIV_country_breakdown_ch4_agriculture_air_w_labels = t(TIV_breakdown_ch4_agriculture_air_w_labels %>%
                                                         group_by(V1) %>%
                                                         select(-X,-V2) %>%
                                                         summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_agriculture_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_agriculture_air_",year_current,"_pxp.csv"))

# CH4 - waste - air
CH4_waste_air = satellite[436,]
CH4_waste_air = CH4_waste_air*28
DIV_ch4_waste_air = CH4_waste_air/total_output
DIV_ch4_waste_air[is.na(DIV_ch4_waste_air)]=0
DIV_ch4_waste_air[DIV_ch4_waste_air == Inf]<-0
TIV_ch4_waste_air = as.vector(DIV_ch4_waste_air) %*% L

write.csv(TIV_ch4_waste_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_waste_air_",year_current,"_pxp.csv"))

TIV_breakdown_ch4_waste_air = as.vector(DIV_ch4_waste_air) * L
TIV_breakdown_ch4_waste_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_ch4_waste_air)
TIV_country_breakdown_ch4_waste_air_w_labels = t(TIV_breakdown_ch4_waste_air_w_labels %>%
                                                   group_by(V1) %>%
                                                   select(-X,-V2) %>%
                                                   summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_ch4_waste_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_waste_air_",year_current,"_pxp.csv"))

# N2O - combustion - air
N2O_combustion_air = satellite[26,]
N2O_combustion_air = N2O_combustion_air*265
DIV_n2o_combustion_air = N2O_combustion_air/total_output
DIV_n2o_combustion_air[is.na(DIV_n2o_combustion_air)]=0
DIV_n2o_combustion_air[DIV_n2o_combustion_air == Inf]<-0
TIV_n2o_combustion_air = as.vector(DIV_n2o_combustion_air) %*% L

write.csv(TIV_n2o_combustion_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_n2o_CO2eq_combustion_air_",year_current,"_pxp.csv"))

TIV_breakdown_n2o_combustion_air = as.vector(DIV_n2o_combustion_air) * L
TIV_breakdown_n2o_combustion_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_n2o_combustion_air)
TIV_country_breakdown_n2o_combustion_air_w_labels = t(TIV_breakdown_n2o_combustion_air_w_labels %>%
                                                        group_by(V1) %>%
                                                        select(-X,-V2) %>%
                                                        summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_n2o_combustion_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_n2o_CO2eq_combustion_air_",year_current,"_pxp.csv"))

# N2O - agriculture - air
N2O_agriculture_air = satellite[430,]
N2O_agriculture_air = N2O_agriculture_air*265
DIV_n2o_agriculture_air = N2O_agriculture_air/total_output
DIV_n2o_agriculture_air[is.na(DIV_n2o_agriculture_air)]=0
DIV_n2o_agriculture_air[DIV_n2o_agriculture_air == Inf]<-0
TIV_n2o_agriculture_air = as.vector(DIV_n2o_agriculture_air) %*% L

write.csv(TIV_n2o_agriculture_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_n2o_CO2eq_agriculture_air_",year_current,"_pxp.csv"))

TIV_breakdown_n2o_agriculture_air = as.vector(DIV_n2o_agriculture_air) * L
TIV_breakdown_n2o_agriculture_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_n2o_agriculture_air)
TIV_country_breakdown_n2o_agriculture_air_w_labels = t(TIV_breakdown_n2o_agriculture_air_w_labels %>%
                                                         group_by(V1) %>%
                                                         select(-X,-V2) %>%
                                                         summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_n2o_agriculture_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_n2o_CO2eq_agriculture_air_",year_current,"_pxp.csv"))

# SF6 - air
SF6_air = satellite[424,]
SF6_air = SF6_air*23500
DIV_sf6_air = SF6_air/total_output
DIV_sf6_air[is.na(DIV_sf6_air)]=0
DIV_sf6_air[DIV_sf6_air == Inf]<-0
TIV_sf6_air = as.vector(DIV_sf6_air) %*% L

write.csv(TIV_sf6_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_sf6_CO2eq_air_",year_current,"_pxp.csv"))

TIV_breakdown_sf6_air = as.vector(DIV_sf6_air) * L
TIV_breakdown_sf6_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_sf6_air)
TIV_country_breakdown_sf6_air_w_labels = t(TIV_breakdown_sf6_air_w_labels %>%
                                             group_by(V1) %>%
                                             select(-X,-V2) %>%
                                             summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_sf6_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_sf6_CO2eq_air_",year_current,"_pxp.csv"))

# HFC - air
HFC_air = satellite[425,]
DIV_hfc_air = HFC_air/total_output
DIV_hfc_air[is.na(DIV_hfc_air)]=0
DIV_hfc_air[DIV_hfc_air == Inf]<-0
TIV_hfc_air = as.vector(DIV_hfc_air) %*% L

write.csv(TIV_hfc_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_hfc_CO2eq_air_",year_current,"_pxp.csv"))

TIV_breakdown_hfc_air = as.vector(DIV_hfc_air) * L
TIV_breakdown_hfc_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_hfc_air)
TIV_country_breakdown_hfc_air_w_labels = t(TIV_breakdown_hfc_air_w_labels %>%
                                             group_by(V1) %>%
                                             select(-X,-V2) %>%
                                             summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_hfc_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_hfc_CO2eq_air_",year_current,"_pxp.csv"))

# PFC - air
PFC_air = satellite[426,]
DIV_pfc_air = PFC_air/total_output
DIV_pfc_air[is.na(DIV_pfc_air)]=0
DIV_pfc_air[DIV_pfc_air == Inf]<-0
TIV_pfc_air = as.vector(DIV_pfc_air) %*% L

write.csv(TIV_pfc_air, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_pfc_CO2eq_air_",year_current,"_pxp.csv"))

TIV_breakdown_pfc_air = as.vector(DIV_pfc_air) * L
TIV_breakdown_pfc_air_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_pfc_air)
TIV_country_breakdown_pfc_air_w_labels = t(TIV_breakdown_pfc_air_w_labels %>%
                                             group_by(V1) %>%
                                             select(-X,-V2) %>%
                                             summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_pfc_air_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_pfc_CO2eq_air_",year_current,"_pxp.csv"))

# Energy carrier - use
energy_carrier_use = satellite[470,]
DIV_e_u = energy_carrier_use/total_output
DIV_e_u[is.na(DIV_e_u)]=0
DIV_e_u[DIV_e_u == Inf]<-0
TIV_e_u = as.vector(DIV_e_u) %*% L

write.csv(TIV_e_u, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_energy_carrier_use_",year_current,"_pxp.csv"))

TIV_breakdown_e_u = as.vector(DIV_e_u) * L
TIV_breakdown_e_u_w_labels = cbind(Exiobase_T_labels_pxp, TIV_breakdown_e_u)
TIV_country_breakdown_e_u_w_labels = t(TIV_breakdown_e_u_w_labels %>%
                                         group_by(V1) %>%
                                         select(-X,-V2) %>%
                                         summarise_all(funs(sum)))

write.csv(TIV_country_breakdown_e_u_w_labels, paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_energy_carrier_use_",year_current,"_pxp.csv"))
}

isf

HBS: European household budget survey from EUROSTAT, macro-data, from : https://ec.europa.eu/eurostat/web/household-budget-surveys/database [accessed on 22.05.2020]

  1. 'Mean consumption expenditure by income quintile (hbs_exp_t133)'

  2. 'Structure of consumption expenditure by income quintile and COICOP consumption purpose (hbs_str_t223)'

Direct energy use/emissions from households:

  1. For energy, the EUROSTAT data table 'Energy supply and use by NACE Rev. 2 activity' [env_ac_pefasu] at: http://appsso.eurostat.ec.europa.eu/nui/show.do?dataset=env_ac_pefasu [accessed on 03.06.2020].

  2. For emissions to air, we download the EUROSTAT data table 'Air emissions accounts by NACE Rev. 2 activity' [env_ac_ainah_r2] at: https://appsso.eurostat.ec.europa.eu/nui/show.do?dataset=env_ac_ainah_r2&lang=en [accessed on 03.06.2020].

Trade and Transport margin tables, Taxes less Subsidies tables (National Accounts > Annual National Accounts > Supply and Use Tables > SUT Indicators): https://stats.oecd.org/index.aspx?queryid=84864#

  1. Trade and transport margins in percentage of final consumption expenditure by households: Export as text file (csv) - customize to include years 2005 to 2015 [accessed on: 15-04-2020]

  2. Taxes less subsidies on product in percentage of final consumption expenditure by households: Export as text file (csv) - customize to include years 2005 to 2015 [accessed on: 15-04-2020]


# set data directory for income-stratified-footprint files
data_dir_income_stratified_footprints = here("analysis", "preprocessing", "income-stratified-footprints")

################################################### main paper method ####################################################################################
##########################################################################################################################################################
##########################################################################################################################################################

# EUROSTAT Household Budget Survey (HBS)
## load 'mean consumption expenditure by income quintile (hbs_exp_t133)' table
hbs_exp_t133 = read_csv(paste0(data_dir_income_stratified_footprints, "/hbs_exp_t133.csv"))
## rename and arrange by country
mean_expenditure_by_quintile = hbs_exp_t133 %>% 
  rename(geo = 3, quintile = "quantile") %>%
  arrange(geo)

## load 'structure of consumption expenditure by income quintile and COICOP consumption purpose (hbs_str_t223)' table
hbs_str_t223 = read_csv(paste0(data_dir_income_stratified_footprints, "/hbs_str_t223.csv"))
## rename and arrange by country
mean_expenditure_by_coicop_sector = hbs_str_t223 %>% 
  rename(geo = 4, quintile = "quantile") %>%
  arrange(geo) 

## create long data set for mean expenditure by quintile table, saving it for use later when creating European expenditure deciles, and keeping both per household and per adult equivalent units
mean_expenditure_by_quintile_long = mean_expenditure_by_quintile %>%
  filter(!(quintile %in% c("UNK","TOTAL"))) %>%
  filter(!(geo %in% c("EA",
                      "EA12",
                      "EA13",
                      "EA17",
                      "EA18",
                      "EA19",
                      "EEA28",
                      "EEA30_2007",
                      "EFTA",
                      "EU15",
                      "EU25",
                      "EU27_2007",
                      "EU27_2020",
                      "EU28"))) %>%
  gather(year,pps,-quintile,-unit,-geo) %>%
  rename(mean_expenditure = pps)

## write long data set as .csv file to 'data_dir_income_stratified_footprints' - used later in final code chunk for creating European expenditure deciles
write_csv(mean_expenditure_by_quintile_long, paste0(data_dir_income_stratified_footprints, "/mean_expenditure_by_quintile_long.csv"))

## create long data set for mean expenditure by quintile table for use in this code chunk, filter for per household 
mean_expenditure_by_quintile_long = mean_expenditure_by_quintile %>%
  filter(unit == "PPS_HH") %>% # filter 'mean expenditure by quintile' in PPS per HouseHold
  filter(!(quintile %in% c("UNK","TOTAL"))) %>% # filter out unknown and total expenditure
  select(-unit) %>%
  gather(year,pps,-quintile,-geo)

## create long data set for structure of mean consumption expenditure by quintile table
### here we collapse (sum) the two 'rent' HBS sectors 'CP041' and 'CP042' to create a 
### single 'rent' sector. We make some manual adjustments where one coicop level 2 consumption 
### category is missing data, using the total coicop level 1 expenditure and expenditure in the 
### other coicop level 2 categories to calculate the difference. These may not be relevant for 
### future available updates of the EUROSTAT HBS if they have been corrected. In that case, comment out the
### mutations at the end of this code.
mean_expenditure_by_coicop_sector_long = mean_expenditure_by_coicop_sector %>% 
  filter(!(quintile %in% c("UNK","TOTAL"))) %>% # filter out unknown and total expenditure
  select(-unit) %>%
  gather(year,pm,-quintile,-coicop,-geo) %>%
  mutate(coicop = dplyr::recode(coicop, "CP041" = "rent",        
                                "CP042" = "rent")) %>%           
  group_by(geo,quintile,coicop,year) %>%                               
  mutate(pm = parse_number(pm),
         pm = as.numeric(pm)) %>%
  summarise(pm = sum(pm, na.rm = TRUE)) %>%
  ungroup() %>% 
  mutate(pm = ifelse(geo == "DE" & year == 2005 & quintile == "QUINTILE1" & 
                       coicop == "CP072", 92-21-14,pm)) %>% 
  mutate(pm = ifelse(geo == "DE" & year == 2005 & quintile == "QUINTILE2" & 
                       coicop == "CP072", 108-22-12,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2005 & quintile == "QUINTILE3" & 
                       coicop == "CP072", 124-32-11,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2005 & quintile == "QUINTILE4" & 
                       coicop == "CP072", 133-43-10,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2005 & quintile == "QUINTILE5" & 
                       coicop == "CP072", 162-81-11,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2010 & quintile == "QUINTILE1" & 
                       coicop == "CP044", 412-4-78-322,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2010 & quintile == "QUINTILE2" & 
                       coicop == "CP044", 355-5-68-265,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2010 & quintile == "QUINTILE3" & 
                       coicop == "CP044", 325-8-64-229,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2010 & quintile == "QUINTILE4" & 
                       coicop == "CP044", 300-9-58-204,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2010 & quintile == "QUINTILE5" & 
                       coicop == "CP044", 249-10-46-167,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2015 & quintile == "QUINTILE1" & 
                       coicop == "CP044", 433-3-82-340,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2015 & quintile == "QUINTILE2" & 
                       coicop == "CP044", 376-6-70-284,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2015 & quintile == "QUINTILE3" & 
                       coicop == "CP044", 351-9-67-251,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2015 & quintile == "QUINTILE4" & 
                       coicop == "CP044", 326-10-61-228,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2015 & quintile == "QUINTILE5" & 
                       coicop == "CP044", 280-9-49-195,pm)) 

# join the two long HBS tables together
join_expenditures = mean_expenditure_by_coicop_sector_long %>% 
  left_join(mean_expenditure_by_quintile_long, by = c("geo","quintile","year")) %>%
  mutate(pps = as.numeric(pps),
         pm = as.numeric(pm),
         pps_coicop = pm*(pps/1000))

################################################### main paper method, EXIOBASE industry-by-industry version ############################################# ########################################################################################################################################################## 

# EXIOBASE industry-by-industry version

## set study years
years_exb_ixi = c(2005,2010,2015)

## create NULL dataframe for dis-aggregated final demand
disaggregated_final_demand = NULL

## create NULL dataframe for 'total intensity vectors'
TIVs = NULL

## create NULL dataframe for domestic 'total intensity vectors'
domestic_TIVs = NULL

## create NULL dataframe for rest-of-Europe 'total intensity vectors'
europe_TIVs = NULL

## create NULL dataframe for national footprints
national_fp = NULL

## create NULL dataframe for national territorial energy use/emissions
national_territorial = NULL

## 'for' loop which populates the above NULL dataframes
for (i in years_exb_ixi){
  
  year_current = i
  
  ## EXIOBASE final demand table without labels (.csv file)
  Exiobase_FD =  read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/FD_",year_current,"_ixi.csv"))[,-1]
  
  ## select household (hh) final demand vectors for study countries
  AT = Exiobase_FD[,1]
  BE = Exiobase_FD[,8]
  BG = Exiobase_FD[,15]
  CY = Exiobase_FD[,22]
  CZ = Exiobase_FD[,29]
  DE = Exiobase_FD[,36]
  DK = Exiobase_FD[,43]
  EE = Exiobase_FD[,50]
  EL = Exiobase_FD[,78]
  ES = Exiobase_FD[,57]
  FI = Exiobase_FD[,64]
  FR = Exiobase_FD[,71]
  HR = Exiobase_FD[,85]
  HU = Exiobase_FD[,92]
  IE = Exiobase_FD[,99]
  IT = Exiobase_FD[,106]
  LT = Exiobase_FD[,113]
  LU = Exiobase_FD[,120]
  LV = Exiobase_FD[,127]
  MT = Exiobase_FD[,134]
  NL = Exiobase_FD[,141]
  NO = Exiobase_FD[,288]
  PL = Exiobase_FD[,148]
  PT = Exiobase_FD[,155]
  RO = Exiobase_FD[,162]
  SE = Exiobase_FD[,169]
  SI = Exiobase_FD[,176]
  SK = Exiobase_FD[,183]
  TR = Exiobase_FD[,274]
  UK = Exiobase_FD[,190]
  
  Eurostat_countries = cbind(AT,BE,BG,CY,CZ,DE,DK,EE,EL,ES,FI,FR,HR,HU,IE,IT,LT,LU,LV,MT,NL,NO,PL,PT,RO,SE,SI,SK,TR,UK)
  
  ## read in EXIOBASE production sector labels written and saved in previous code chunk
  Exiobase_T_labels = read.csv(paste0(data_dir_income_stratified_footprints, "/Exiobase_T_labels_ixi_w_coicop_mapping.csv")) %>%
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK")) 
  
  ## bind EXIOBASE hh final demand with production sector labels
  hh_fd_with_production_sector_labels = cbind(Exiobase_T_labels,Eurostat_countries) %>% rename(geo = V1, sector = V2)
  
  ## replicate each cell of each country's hh final demand as many times as there are income quantiles in the HBS data - in this case: 5
  cells_repeat = data.frame(hh_fd_with_production_sector_labels %>% slice(rep(1:n(), each = 5))) 
  
  ## create quintile names
  quintiles = data.frame(rep(c("QUINTILE1","QUINTILE2","QUINTILE3","QUINTILE4","QUINTILE5"),163)) %>% rename_at(1,~"quintile")
  
  ## bind replicated hh final demand cells to quintile names
  replicated = cbind(cells_repeat,quintiles) %>% rename(country_of_production = geo)
  
  ## convert to long data
  replicated_long = replicated %>% gather(geo, value,-sector,-coicop,-quintile,-five_sectors,-country_of_production)
  
  ## create year column
  year = as.character(rep(year_current,nrow(replicated_long)))
  
  ## bind year with long hh fd data
  replicated_long = cbind(year,replicated_long)
  
  ## populate NULL 'dis-aggregated_final_demand' dataframe with hh fd from each study year
  disaggregated_final_demand = rbind(disaggregated_final_demand, replicated_long)
  
  
  # load total intensity vectors
  ## CO2 - combustion - air
  Exiobase_TIV_co2_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_combustion_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_co2_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_combustion_air_", year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_combustion_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_co2_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_combustion_air_", year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_combustion_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_combustion_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_combustion_europe,TIV_CO2_combustion_not_europe)
  
  ## CO2 - noncombustion - cement - air
  Exiobase_TIV_co2_noncombustion_cement_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_noncombustion_cement_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_co2_noncombustion_cement_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_noncombustion_cement_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_noncombustion_cement_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_co2_noncombustion_cement_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_noncombustion_cement_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_noncombustion_cement_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_noncombustion_cement_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_noncombustion_cement_europe,TIV_CO2_noncombustion_cement_not_europe)
  
  ## CO2 - noncombustion - lime - air
  Exiobase_TIV_co2_noncombustion_lime_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_noncombustion_lime_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_co2_noncombustion_lime_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_noncombustion_lime_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_noncombustion_lime_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_co2_noncombustion_lime_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_noncombustion_lime_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_noncombustion_lime_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_noncombustion_lime_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_noncombustion_lime_europe,TIV_CO2_noncombustion_lime_not_europe)
  
  ## CO2 - agriculture - peat decay - air
  Exiobase_TIV_co2_agriculture_peatdecay_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_agriculture_peatdecay_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_co2_agriculture_peatdecay_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_agriculture_peatdecay_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_agriculture_peatdecay_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_co2_agriculture_peatdecay_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_agriculture_peatdecay_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_agriculture_peatdecay_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_agriculture_peatdecay_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_agriculture_peatdecay_europe,TIV_CO2_agriculture_peatdecay_not_europe)
  
  ## CO2 - waste - biogenic - air
  Exiobase_TIV_co2_waste_biogenic_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_biogenic_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_co2_waste_biogenic_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_biogenic_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_waste_biogenic_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_co2_waste_biogenic_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_biogenic_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_waste_biogenic_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_waste_biogenic_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_waste_biogenic_europe,TIV_CO2_waste_biogenic_not_europe)
  
  ## CO2 - waste - fossil - air
  Exiobase_TIV_co2_waste_fossil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_waste_fossil_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_co2_waste_fossil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_waste_fossil_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_waste_fossil_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_co2_waste_fossil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_waste_fossil_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_waste_fossil_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_waste_fossil_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_waste_fossil_europe,TIV_CO2_waste_fossil_not_europe)
  
  ## CH4 - combustion -air
  Exiobase_TIV_ch4_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_combustion_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_combustion_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_combustion_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_combustion_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_combustion_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_combustion_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_combustion_europe,TIV_CH4_combustion_not_europe)
  
  ## CH4 - noncombustion - gas - air
  Exiobase_TIV_ch4_noncombustion_gas_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_gas_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_gas_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_gas_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_gas_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_gas_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_gas_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_gas_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_gas_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_gas_europe,TIV_CH4_noncombustion_gas_not_europe)
  
  ## CH4 - noncombustion - oil - air
  Exiobase_TIV_ch4_noncombustion_oil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_oil_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_oil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_oil_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_oil_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_oil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_oil_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_oil_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_oil_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_oil_europe,TIV_CH4_noncombustion_oil_not_europe)
  
  ## CH4 - noncombustion - anthracite - air
  Exiobase_TIV_ch4_noncombustion_anthracite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_anthracite_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_anthracite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_anthracite_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_anthracite_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_anthracite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_anthracite_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_anthracite_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_anthracite_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_anthracite_europe,TIV_CH4_noncombustion_anthracite_not_europe)
  
  ## CH4 - noncombustion - bituminouscoal - air
  Exiobase_TIV_ch4_noncombustion_bituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_bituminouscoal_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_bituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_bituminouscoal_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_bituminouscoal_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_bituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_bituminouscoal_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_bituminouscoal_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_bituminouscoal_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_bituminouscoal_europe,TIV_CH4_noncombustion_bituminouscoal_not_europe)
  
  ## CH4 - noncombustion - cokingcoal - air
  Exiobase_TIV_ch4_noncombustion_cokingcoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_cokingcoal_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_cokingcoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_cokingcoal_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_cokingcoal_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_cokingcoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_cokingcoal_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_cokingcoal_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_cokingcoal_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_cokingcoal_europe,TIV_CH4_noncombustion_cokingcoal_not_europe)
  
  ## CH4 - noncombustion - lignite - air
  Exiobase_TIV_ch4_noncombustion_lignite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_lignite_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_lignite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_lignite_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_lignite_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_lignite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_lignite_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_lignite_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_lignite_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_lignite_europe,TIV_CH4_noncombustion_lignite_not_europe)
  
  ## CH4 - noncombustion - subbituminouscoal - air
  Exiobase_TIV_ch4_noncombustion_subbituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_subbituminouscoal_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_subbituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_subbituminouscoal_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_subbituminouscoal_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_subbituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_subbituminouscoal_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_subbituminouscoal_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_subbituminouscoal_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_subbituminouscoal_europe,TIV_CH4_noncombustion_subbituminouscoal_not_europe)
  
  ## CH4 - noncombustion - oilrefinery - air
  Exiobase_TIV_ch4_noncombustion_oilrefinery_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_oilrefinery_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_oilrefinery_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_oilrefinery_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_oilrefinery_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_oilrefinery_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_oilrefinery_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_oilrefinery_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_oilrefinery_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_oilrefinery_europe,TIV_CH4_noncombustion_oilrefinery_not_europe)
  
  ## CH4 - agriculture - air
  Exiobase_TIV_ch4_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_agriculture_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_agriculture_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_agriculture_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_agriculture_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_agriculture_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_agriculture_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_agriculture_europe,TIV_CH4_agriculture_not_europe)
  
  ## CH4 - waste - air
  Exiobase_TIV_ch4_waste_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_waste_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_waste_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_waste_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_waste_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_waste_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_waste_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_waste_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_waste_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_waste_europe,TIV_CH4_waste_not_europe)
  
  ## N2O - combustion - air
  Exiobase_TIV_n2o_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_n2o_CO2eq_combustion_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_n2o_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_n2o_CO2eq_combustion_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_N2O_combustion_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_n2o_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_n2o_CO2eq_combustion_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_N2O_combustion_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_N2O_combustion_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_N2O_combustion_europe,TIV_N2O_combustion_not_europe)
  
  ## N2O - agriculture - air
  Exiobase_TIV_n2o_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_n2o_CO2eq_agriculture_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_n2o_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_n2o_CO2eq_agriculture_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_N2O_agriculture_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_n2o_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_n2o_CO2eq_agriculture_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_N2O_agriculture_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_N2O_agriculture_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_N2O_agriculture_europe,TIV_N2O_agriculture_not_europe)
  
  ## SF6 - air
  Exiobase_TIV_sf6_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_sf6_CO2eq_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_sf6_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_sf6_CO2eq_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_SF6_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_sf6_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_sf6_CO2eq_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_SF6_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_SF6_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_SF6_europe,TIV_SF6_not_europe)
  
  ## HFC - air
  Exiobase_TIV_hfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_hfc_CO2eq_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_hfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_hfc_CO2eq_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_HFC_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_hfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_hfc_CO2eq_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_HFC_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_HFC_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_HFC_europe,TIV_HFC_not_europe)
  
  ## PFC - air
  Exiobase_TIV_pfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_pfc_CO2eq_air_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_pfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_pfc_CO2eq_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_PFC_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_pfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_pfc_CO2eq_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_PFC_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_PFC_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_PFC_europe,TIV_PFC_not_europe)
  
  ## energy use
  Exiobase_TIV_energy_use_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_energy_carrier_use_",year_current,"_ixi.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_energy_use_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_energy_carrier_use_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_energy_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_energy_use_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_energy_carrier_use_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_energy_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_energy_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_energy_europe,TIV_energy_not_europe)
  
  # bind production sector labels with total intensity vectors
  TIV_with_labels = cbind(Exiobase_T_labels,
                          t(Exiobase_TIV_co2_combustion_bp),
                          t(Exiobase_TIV_co2_noncombustion_cement_bp),
                          t(Exiobase_TIV_co2_noncombustion_lime_bp),
                          t(Exiobase_TIV_co2_agriculture_peatdecay_bp),
                          t(Exiobase_TIV_co2_waste_biogenic_bp),
                          t(Exiobase_TIV_co2_waste_fossil_bp),
                          t(Exiobase_TIV_ch4_combustion_bp),
                          t(Exiobase_TIV_ch4_noncombustion_gas_bp),
                          t(Exiobase_TIV_ch4_noncombustion_oil_bp),
                          t(Exiobase_TIV_ch4_noncombustion_anthracite_bp),
                          t(Exiobase_TIV_ch4_noncombustion_bituminouscoal_bp),
                          t(Exiobase_TIV_ch4_noncombustion_cokingcoal_bp),
                          t(Exiobase_TIV_ch4_noncombustion_lignite_bp),
                          t(Exiobase_TIV_ch4_noncombustion_subbituminouscoal_bp),
                          t(Exiobase_TIV_ch4_noncombustion_oilrefinery_bp),
                          t(Exiobase_TIV_ch4_agriculture_bp),
                          t(Exiobase_TIV_ch4_waste_bp),
                          t(Exiobase_TIV_n2o_combustion_bp),
                          t(Exiobase_TIV_n2o_agriculture_bp),
                          t(Exiobase_TIV_sf6_bp),
                          t(Exiobase_TIV_hfc_bp),
                          t(Exiobase_TIV_pfc_bp),
                          t(Exiobase_TIV_energy_use_bp)) %>% 
    rename(TIV_CO2_combustion = "t(Exiobase_TIV_co2_combustion_bp)",
           TIV_CO2_noncombustion_cement = "t(Exiobase_TIV_co2_noncombustion_cement_bp)",
           TIV_CO2_noncombustion_lime = "t(Exiobase_TIV_co2_noncombustion_lime_bp)",
           TIV_CO2_agriculture_peatdecay = "t(Exiobase_TIV_co2_agriculture_peatdecay_bp)",
           TIV_CO2_waste_biogenic = "t(Exiobase_TIV_co2_waste_biogenic_bp)",
           TIV_CO2_waste_fossil = "t(Exiobase_TIV_co2_waste_fossil_bp)",
           TIV_CH4_combustion = "t(Exiobase_TIV_ch4_combustion_bp)",
           TIV_CH4_noncombustion_gas = "t(Exiobase_TIV_ch4_noncombustion_gas_bp)",
           TIV_CH4_noncombustion_oil = "t(Exiobase_TIV_ch4_noncombustion_oil_bp)",
           TIV_CH4_noncombustion_anthracite = "t(Exiobase_TIV_ch4_noncombustion_anthracite_bp)",
           TIV_CH4_noncombustion_bituminouscoal = "t(Exiobase_TIV_ch4_noncombustion_bituminouscoal_bp)",
           TIV_CH4_noncombustion_cokingcoal = "t(Exiobase_TIV_ch4_noncombustion_cokingcoal_bp)",
           TIV_CH4_noncombustion_lignite = "t(Exiobase_TIV_ch4_noncombustion_lignite_bp)",
           TIV_CH4_noncombustion_subbituminouscoal = "t(Exiobase_TIV_ch4_noncombustion_subbituminouscoal_bp)",
           TIV_CH4_noncombustion_oilrefinery = "t(Exiobase_TIV_ch4_noncombustion_oilrefinery_bp)",
           TIV_CH4_agriculture = "t(Exiobase_TIV_ch4_agriculture_bp)",
           TIV_CH4_waste = "t(Exiobase_TIV_ch4_waste_bp)",
           TIV_N2O_combustion = "t(Exiobase_TIV_n2o_combustion_bp)",
           TIV_N2O_agriculture = "t(Exiobase_TIV_n2o_agriculture_bp)",
           TIV_SF6 = "t(Exiobase_TIV_sf6_bp)",
           TIV_HFC = "t(Exiobase_TIV_hfc_bp)",
           TIV_PFC = "t(Exiobase_TIV_pfc_bp)",
           TIV_energy = "t(Exiobase_TIV_energy_use_bp)") %>% 
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK")) 
  
  # create year column
  year = as.character(rep(year_current,nrow(TIV_with_labels)))
  
  # bind year with labeled total intensity vectors
  TIVs_intermediate = cbind(year,TIV_with_labels) %>% 
    rename(country_of_production = V1, sector = V2)
  
  # populate NULL total intensity vectors dataframe
  TIVs = rbind(TIVs,TIVs_intermediate)
  
  # bind production sector labels with domestic total intensity vectors
  domestic_TIV_with_labels = cbind(Exiobase_T_labels,
                                   Exiobase_TIV_country_breakdown_co2_combustion_bp,
                                   Exiobase_TIV_country_breakdown_co2_noncombustion_cement_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_co2_noncombustion_lime_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_co2_agriculture_peatdecay_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_co2_waste_biogenic_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_co2_waste_fossil_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_combustion_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_gas_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_oil_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_anthracite_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_bituminouscoal_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_cokingcoal_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_lignite_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_subbituminouscoal_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_oilrefinery_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_agriculture_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_waste_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_n2o_combustion_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_n2o_agriculture_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_sf6_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_hfc_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_pfc_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_energy_use_bp %>% select(-country))  %>% 
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK"),
           country = dplyr::recode(country, "GR" = "EL", "GB" = "UK")) 
  
  # create year column for domestic TIVs
  year_domestic = as.character(rep(year_current,nrow(domestic_TIV_with_labels)))
  
  # bind year with labeled domestic total intensity vectors
  TIVs_domestic_intermediate = cbind(year_domestic,domestic_TIV_with_labels) %>% 
    rename(country_of_production = V1, sector = V2, geo = country, year = year_domestic) %>%
    mutate(TIV_CO2_combustion_domestic = as.numeric(TIV_CO2_combustion_domestic),
           TIV_CO2_noncombustion_cement_domestic = as.numeric(TIV_CO2_noncombustion_cement_domestic),
           TIV_CO2_noncombustion_lime_domestic = as.numeric(TIV_CO2_noncombustion_lime_domestic),
           TIV_CO2_agriculture_peatdecay_domestic = as.numeric(TIV_CO2_agriculture_peatdecay_domestic),
           TIV_CO2_waste_biogenic_domestic = as.numeric(TIV_CO2_waste_biogenic_domestic),
           TIV_CO2_waste_fossil_domestic = as.numeric(TIV_CO2_waste_fossil_domestic),
           TIV_CH4_combustion_domestic = as.numeric(TIV_CH4_combustion_domestic),
           TIV_CH4_noncombustion_gas_domestic = as.numeric(TIV_CH4_noncombustion_gas_domestic),
           TIV_CH4_noncombustion_oil_domestic = as.numeric(TIV_CH4_noncombustion_oil_domestic),
           TIV_CH4_noncombustion_anthracite_domestic = as.numeric(TIV_CH4_noncombustion_anthracite_domestic),
           TIV_CH4_noncombustion_bituminouscoal_domestic = as.numeric(TIV_CH4_noncombustion_bituminouscoal_domestic),
           TIV_CH4_noncombustion_cokingcoal_domestic = as.numeric(TIV_CH4_noncombustion_cokingcoal_domestic),
           TIV_CH4_noncombustion_lignite_domestic = as.numeric(TIV_CH4_noncombustion_lignite_domestic),
           TIV_CH4_noncombustion_subbituminouscoal_domestic = as.numeric(TIV_CH4_noncombustion_subbituminouscoal_domestic),
           TIV_CH4_noncombustion_oilrefinery_domestic = as.numeric(TIV_CH4_noncombustion_oilrefinery_domestic),
           TIV_CH4_agriculture_domestic = as.numeric(TIV_CH4_agriculture_domestic),
           TIV_CH4_waste_domestic = as.numeric(TIV_CH4_waste_domestic),
           TIV_N2O_combustion_domestic = as.numeric(TIV_N2O_combustion_domestic),
           TIV_N2O_agriculture_domestic = as.numeric(TIV_N2O_agriculture_domestic),
           TIV_SF6_domestic = as.numeric(TIV_SF6_domestic),
           TIV_HFC_domestic = as.numeric(TIV_HFC_domestic),
           TIV_PFC_domestic = as.numeric(TIV_PFC_domestic),
           TIV_energy_domestic = as.numeric(TIV_energy_domestic))
  
  # populate NULL domestic TIVs dataframe
  domestic_TIVs = rbind(domestic_TIVs, TIVs_domestic_intermediate)
  
  # bind production sector labels with European TIVs
  europe_TIV_with_labels = cbind(Exiobase_T_labels,
                                 Exiobase_TIV_europe_breakdown_co2_combustion_bp,
                                 Exiobase_TIV_europe_breakdown_co2_noncombustion_cement_bp,
                                 Exiobase_TIV_europe_breakdown_co2_noncombustion_lime_bp,
                                 Exiobase_TIV_europe_breakdown_co2_agriculture_peatdecay_bp,
                                 Exiobase_TIV_europe_breakdown_co2_waste_biogenic_bp,
                                 Exiobase_TIV_europe_breakdown_co2_waste_fossil_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_combustion_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_gas_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_oil_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_anthracite_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_bituminouscoal_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_cokingcoal_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_lignite_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_subbituminouscoal_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_oilrefinery_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_agriculture_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_waste_bp,
                                 Exiobase_TIV_europe_breakdown_n2o_combustion_bp,
                                 Exiobase_TIV_europe_breakdown_n2o_agriculture_bp,
                                 Exiobase_TIV_europe_breakdown_sf6_bp,
                                 Exiobase_TIV_europe_breakdown_hfc_bp,
                                 Exiobase_TIV_europe_breakdown_pfc_bp,
                                 Exiobase_TIV_europe_breakdown_energy_use_bp) %>% 
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK")) 
  
  # create year column for European TIVs
  year_europe = as.character(rep(year_current,nrow(europe_TIV_with_labels)))
  
  # bind year with labeled European total intensity vectors
  TIVs_europe_intermediate = cbind(year_europe,europe_TIV_with_labels) %>% 
    rename(country_of_production = V1, sector = V2, year = year_europe) %>%
    mutate(TIV_CO2_combustion_europe = as.numeric(TIV_CO2_combustion_europe),
           TIV_CO2_noncombustion_cement_europe = as.numeric(TIV_CO2_noncombustion_cement_europe),
           TIV_CO2_noncombustion_lime_europe = as.numeric(TIV_CO2_noncombustion_lime_europe),
           TIV_CO2_agriculture_peatdecay_europe = as.numeric(TIV_CO2_agriculture_peatdecay_europe),
           TIV_CO2_waste_biogenic_europe = as.numeric(TIV_CO2_waste_biogenic_europe),
           TIV_CO2_waste_fossil_europe = as.numeric(TIV_CO2_waste_fossil_europe),
           TIV_CH4_combustion_europe = as.numeric(TIV_CH4_combustion_europe),
           TIV_CH4_noncombustion_gas_europe = as.numeric(TIV_CH4_noncombustion_gas_europe),
           TIV_CH4_noncombustion_oil_europe = as.numeric(TIV_CH4_noncombustion_oil_europe),
           TIV_CH4_noncombustion_anthracite_europe = as.numeric(TIV_CH4_noncombustion_anthracite_europe),
           TIV_CH4_noncombustion_bituminouscoal_europe = as.numeric(TIV_CH4_noncombustion_bituminouscoal_europe),
           TIV_CH4_noncombustion_cokingcoal_europe = as.numeric(TIV_CH4_noncombustion_cokingcoal_europe),
           TIV_CH4_noncombustion_lignite_europe = as.numeric(TIV_CH4_noncombustion_lignite_europe),
           TIV_CH4_noncombustion_subbituminouscoal_europe = as.numeric(TIV_CH4_noncombustion_subbituminouscoal_europe),
           TIV_CH4_noncombustion_oilrefinery_europe = as.numeric(TIV_CH4_noncombustion_oilrefinery_europe),
           TIV_CH4_agriculture_europe = as.numeric(TIV_CH4_agriculture_europe),
           TIV_CH4_waste_europe = as.numeric(TIV_CH4_waste_europe),
           TIV_N2O_combustion_europe = as.numeric(TIV_N2O_combustion_europe),
           TIV_N2O_agriculture_europe = as.numeric(TIV_N2O_agriculture_europe),
           TIV_SF6_europe = as.numeric(TIV_SF6_europe),
           TIV_HFC_europe = as.numeric(TIV_HFC_europe),
           TIV_PFC_europe = as.numeric(TIV_PFC_europe),
           TIV_energy_europe = as.numeric(TIV_energy_europe))
  
  # populate NULL Europe TIVs dataframe
  europe_TIVs = rbind(europe_TIVs, TIVs_europe_intermediate)
  
  # calculating total national footprints
  ## read in EXIOBASE final demand labels and calculate national footprints for each study satellite extension
  Exiobase_FD_labels = as.data.frame(t(read.csv(paste0(data_dir_exiobase, "/Exiobase_FD_labels_ixi.csv")))[-1,-3]) %>%
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK")) 
  
  national_CO2_combustion_footprints = Exiobase_FD * t(Exiobase_TIV_co2_combustion_bp)
  
  national_CO2_noncombustion_cement_footprints = Exiobase_FD * t(Exiobase_TIV_co2_noncombustion_cement_bp)
  
  national_CO2_noncombustion_lime_footprints = Exiobase_FD * t(Exiobase_TIV_co2_noncombustion_lime_bp)
  
  national_CO2_agriculture_peatdecay_footprints = Exiobase_FD * t(Exiobase_TIV_co2_agriculture_peatdecay_bp)
  
  national_CO2_waste_biogenic_footprints = Exiobase_FD * t(Exiobase_TIV_co2_waste_biogenic_bp)
  
  national_CO2_waste_fossil_footprints = Exiobase_FD * t(Exiobase_TIV_co2_waste_fossil_bp)
  
  national_CH4_combustion_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_combustion_bp)
  
  national_CH4_noncombustion_gas_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_gas_bp)
  
  national_CH4_noncombustion_oil_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_oil_bp)
  
  national_CH4_noncombustion_anthracite_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_anthracite_bp)
  
  national_CH4_noncombustion_bituminouscoal_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_bituminouscoal_bp)
  
  national_CH4_noncombustion_cokingcoal_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_cokingcoal_bp)
  
  national_CH4_noncombustion_lignite_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_lignite_bp)
  
  national_CH4_noncombustion_subbituminouscoal_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_subbituminouscoal_bp)
  
  national_CH4_noncombustion_oilrefinery_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_oilrefinery_bp)
  
  national_CH4_agriculture_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_agriculture_bp)
  
  national_CH4_waste_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_waste_bp)
  
  national_N2O_combustion_footprints = Exiobase_FD * t(Exiobase_TIV_n2o_combustion_bp)
  
  national_N2O_agriculture_footprints = Exiobase_FD * t(Exiobase_TIV_n2o_agriculture_bp)
  
  national_SF6_footprints = Exiobase_FD * t(Exiobase_TIV_sf6_bp)
  
  national_HFC_footprints = Exiobase_FD * t(Exiobase_TIV_hfc_bp)
  
  national_PFC_footprints = Exiobase_FD * t(Exiobase_TIV_pfc_bp)
  
  national_energy_footprints = Exiobase_FD * t(Exiobase_TIV_energy_use_bp)
  
  ## bind FD labels and national footprints together
  national_footprints_w_labels = cbind(Exiobase_FD_labels, 
                                       rowSums(t(national_CO2_combustion_footprints)),
                                       rowSums(t(national_CO2_noncombustion_cement_footprints)), 
                                       rowSums(t(national_CO2_noncombustion_lime_footprints)), 
                                       rowSums(t(national_CO2_agriculture_peatdecay_footprints)), 
                                       rowSums(t(national_CO2_waste_biogenic_footprints)), 
                                       rowSums(t(national_CO2_waste_fossil_footprints)),
                                       rowSums(t(national_CH4_combustion_footprints)),
                                       rowSums(t(national_CH4_noncombustion_gas_footprints)),
                                       rowSums(t(national_CH4_noncombustion_oil_footprints)),
                                       rowSums(t(national_CH4_noncombustion_anthracite_footprints)), 
                                       rowSums(t(national_CH4_noncombustion_bituminouscoal_footprints)), 
                                       rowSums(t(national_CH4_noncombustion_cokingcoal_footprints)),
                                       rowSums(t(national_CH4_noncombustion_lignite_footprints)),
                                       rowSums(t(national_CH4_noncombustion_subbituminouscoal_footprints)), 
                                       rowSums(t(national_CH4_noncombustion_oilrefinery_footprints)), 
                                       rowSums(t(national_CH4_agriculture_footprints)),
                                       rowSums(t(national_CH4_waste_footprints)),
                                       rowSums(t(national_N2O_combustion_footprints)),
                                       rowSums(t(national_N2O_agriculture_footprints)),
                                       rowSums(t(national_SF6_footprints)),
                                       rowSums(t(national_HFC_footprints)),
                                       rowSums(t(national_PFC_footprints)),
                                       rowSums(t(national_energy_footprints))) %>%
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK")) 
  
  ## create year column for national footprints
  year_national_fp = as.character(rep(year_current,nrow(national_footprints_w_labels)))
  
  # satellite extensions direct from household final demand
  ## load satellite extensions direct from household final demand table from 'data_dir_exiobase' and convert to numeric
  direct_FD_extensions = read.csv(paste0(data_dir_exiobase, "/IOT_", year_current, "_ixi/satellite/F_hh.csv", sep = ""),row.names=NULL,as.is=TRUE)[3:1115,3:345]
  direct_FD_extensions[is.na(direct_FD_extensions)]=0
  direct_FD_extensions = mapply(direct_FD_extensions, FUN = as.numeric)
  direct_FD_extensions = matrix(data=direct_FD_extensions,ncol=343,nrow=1113)
  
  ## extract each study satellite extension
  direct_FD_co2_combustion = direct_FD_extensions[24,]
  direct_FD_co2_noncombustion_cement = direct_FD_extensions[93,]
  direct_FD_co2_noncombustion_lime = direct_FD_extensions[94,]
  direct_FD_co2_agriculture_peatdecay = direct_FD_extensions[428,]
  direct_FD_co2_waste_biogenic = direct_FD_extensions[438,]
  direct_FD_co2_waste_fossil = direct_FD_extensions[439,]
  direct_FD_ch4_combustion = direct_FD_extensions[25,]*28
  direct_FD_ch4_noncombustion_gas = direct_FD_extensions[68,]*28
  direct_FD_ch4_noncombustion_oil = direct_FD_extensions[69,]*28
  direct_FD_ch4_noncombustion_anthracite = direct_FD_extensions[70,]*28
  direct_FD_ch4_noncombustion_bituminouscoal = direct_FD_extensions[71,]*28
  direct_FD_ch4_noncombustion_cokingcoal = direct_FD_extensions[72,]*28
  direct_FD_ch4_noncombustion_lignite = direct_FD_extensions[73,]*28
  direct_FD_ch4_noncombustion_subbituminouscoal = direct_FD_extensions[74,]*28
  direct_FD_ch4_noncombustion_oilrefinery = direct_FD_extensions[75,]*28
  direct_FD_ch4_agriculture = direct_FD_extensions[427,]*28
  direct_FD_ch4_waste = direct_FD_extensions[436,]*28
  direct_FD_n2o_combustion = direct_FD_extensions[26,]*265
  direct_FD_n2o_agriculture = direct_FD_extensions[430,]*265
  direct_FD_sf6 = direct_FD_extensions[424,]*23500
  direct_FD_hfc = direct_FD_extensions[425,]
  direct_FD_pfc = direct_FD_extensions[426,]
  direct_FD_energy = direct_FD_extensions[470,]
  
  ## bind all extensions together
  direct_FD_fp = data.frame(direct_FD_co2_combustion,
                            direct_FD_co2_noncombustion_cement,
                            direct_FD_co2_noncombustion_lime,
                            direct_FD_co2_agriculture_peatdecay,
                            direct_FD_co2_waste_biogenic,
                            direct_FD_co2_waste_fossil,
                            direct_FD_ch4_combustion,
                            direct_FD_ch4_noncombustion_gas,
                            direct_FD_ch4_noncombustion_oil,
                            direct_FD_ch4_noncombustion_anthracite,
                            direct_FD_ch4_noncombustion_bituminouscoal,
                            direct_FD_ch4_noncombustion_cokingcoal,
                            direct_FD_ch4_noncombustion_lignite,
                            direct_FD_ch4_noncombustion_subbituminouscoal,
                            direct_FD_ch4_noncombustion_oilrefinery,
                            direct_FD_ch4_agriculture,
                            direct_FD_ch4_waste,
                            direct_FD_n2o_combustion,
                            direct_FD_n2o_agriculture,
                            direct_FD_sf6,
                            direct_FD_hfc,
                            direct_FD_pfc,
                            direct_FD_energy)
  
  ## bind national footprints and direct extensions from hh final demand together (with year column)
  national_fp_intermediate = as.data.frame(cbind(year_national_fp,
                                         national_footprints_w_labels,
                                         direct_FD_fp)) %>% 
    rename(year = year_national_fp,
           geo = V1, 
           fd_category = V2, 
           co2_combustion = "rowSums(t(national_CO2_combustion_footprints))",
           co2_noncombustion_cement = "rowSums(t(national_CO2_noncombustion_cement_footprints))",
           co2_noncombustion_lime = "rowSums(t(national_CO2_noncombustion_lime_footprints))",
           co2_agriculture_peatdecay = "rowSums(t(national_CO2_agriculture_peatdecay_footprints))",
           co2_waste_biogenic = "rowSums(t(national_CO2_waste_biogenic_footprints))",
           co2_waste_fossil = "rowSums(t(national_CO2_waste_fossil_footprints))",
           ch4_combustion = "rowSums(t(national_CH4_combustion_footprints))",
           ch4_noncombustion_gas = "rowSums(t(national_CH4_noncombustion_gas_footprints))",
           ch4_noncombustion_oil = "rowSums(t(national_CH4_noncombustion_oil_footprints))",
           ch4_noncombustion_anthracite = "rowSums(t(national_CH4_noncombustion_anthracite_footprints))",
           ch4_noncombustion_bituminouscoal = "rowSums(t(national_CH4_noncombustion_bituminouscoal_footprints))",
           ch4_noncombustion_cokingcoal = "rowSums(t(national_CH4_noncombustion_cokingcoal_footprints))",
           ch4_noncombustion_lignite = "rowSums(t(national_CH4_noncombustion_lignite_footprints))",
           ch4_noncombustion_subbituminouscoal = "rowSums(t(national_CH4_noncombustion_subbituminouscoal_footprints))",
           ch4_noncombustion_oilrefinery = "rowSums(t(national_CH4_noncombustion_oilrefinery_footprints))",
           ch4_agriculture = "rowSums(t(national_CH4_agriculture_footprints))",
           ch4_waste = "rowSums(t(national_CH4_waste_footprints))",
           n2o_combustion = "rowSums(t(national_N2O_combustion_footprints))",
           n2o_agriculture = "rowSums(t(national_N2O_agriculture_footprints))",
           sf6 = "rowSums(t(national_SF6_footprints))",
           hfc = "rowSums(t(national_HFC_footprints))",
           pfc = "rowSums(t(national_PFC_footprints))",
           energy = "rowSums(t(national_energy_footprints))") %>%
    select(year,
           geo,
           fd_category,
           co2_combustion,
           direct_FD_co2_combustion,
           co2_noncombustion_cement,
           direct_FD_co2_noncombustion_cement,
           co2_noncombustion_lime,
           direct_FD_co2_noncombustion_lime,
           co2_agriculture_peatdecay,
           direct_FD_co2_agriculture_peatdecay,
           co2_waste_biogenic,
           direct_FD_co2_waste_biogenic,
           co2_waste_fossil,
           direct_FD_co2_waste_fossil,
           ch4_combustion,
           direct_FD_ch4_combustion,
           ch4_noncombustion_gas,
           direct_FD_ch4_noncombustion_gas,
           ch4_noncombustion_oil,
           direct_FD_ch4_noncombustion_oil,
           ch4_noncombustion_anthracite,
           direct_FD_ch4_noncombustion_anthracite,
           ch4_noncombustion_bituminouscoal,
           direct_FD_ch4_noncombustion_bituminouscoal,
           ch4_noncombustion_cokingcoal,
           direct_FD_ch4_noncombustion_cokingcoal,
           ch4_noncombustion_lignite,
           direct_FD_ch4_noncombustion_lignite,
           ch4_noncombustion_subbituminouscoal,
           direct_FD_ch4_noncombustion_subbituminouscoal,
           ch4_noncombustion_oilrefinery,
           direct_FD_ch4_noncombustion_oilrefinery,
           ch4_agriculture,
           direct_FD_ch4_agriculture,
           ch4_waste,
           direct_FD_ch4_waste,
           n2o_combustion,
           direct_FD_n2o_combustion,
           n2o_agriculture,
           direct_FD_n2o_agriculture,
           sf6,
           direct_FD_sf6,
           hfc,
           direct_FD_hfc,
           pfc,
           direct_FD_pfc,
           energy,
           direct_FD_energy)
  
  ## populate NULL national footprints dataframe
  national_fp = rbind(national_fp, national_fp_intermediate)
  
  # national territorial
  ## load saved satellite extensions table (as .csv file) from 'data_dir_exiobase' and extract each study satellite extension
  satellite = read.csv(paste0(data_dir_exiobase, "/IOT_", year_current, "_ixi/satellite/satellite_",year_current,"_ixi.csv"))[,-1]
  
  CO2_combustion_air = satellite[24,]
  
  CO2_noncombustion_cement_air = satellite[93,]
  
  CO2_noncombustion_lime_air = satellite[94,]
  
  CO2_agriculture_peatdecay_air = satellite[428,]
  
  CO2_waste_biogenic_air = satellite[438,]
  
  CO2_waste_fossil_air = satellite[439,]
  
  CH4_combustion_air = satellite[25,]
  CH4_combustion_air = CH4_combustion_air*28
  
  CH4_noncombustion_gas_air = satellite[68,]
  CH4_noncombustion_gas_air = CH4_noncombustion_gas_air*28
  
  CH4_noncombustion_oil_air = satellite[69,]
  CH4_noncombustion_oil_air = CH4_noncombustion_oil_air*28
  
  CH4_noncombustion_anthracite_air = satellite[70,]
  CH4_noncombustion_anthracite_air = CH4_noncombustion_anthracite_air*28
  
  CH4_noncombustion_bituminouscoal_air = satellite[71,]
  CH4_noncombustion_bituminouscoal_air = CH4_noncombustion_bituminouscoal_air*28
  
  CH4_noncombustion_cokingcoal_air = satellite[72,]
  CH4_noncombustion_cokingcoal_air = CH4_noncombustion_cokingcoal_air*28
  
  CH4_noncombustion_lignite_air = satellite[73,]
  CH4_noncombustion_lignite_air = CH4_noncombustion_lignite_air*28
  
  CH4_noncombustion_subbituminouscoal_air = satellite[74,]
  CH4_noncombustion_subbituminouscoal_air = CH4_noncombustion_subbituminouscoal_air*28
  
  CH4_noncombustion_oilrefinery_air = satellite[75,]
  CH4_noncombustion_oilrefinery_air = CH4_noncombustion_oilrefinery_air*28
  
  CH4_agriculture_air = satellite[427,]
  CH4_agriculture_air = CH4_agriculture_air*28
  
  CH4_waste_air = satellite[436,]
  CH4_waste_air = CH4_waste_air*28
  
  N2O_combustion_air = satellite[26,]
  N2O_combustion_air = N2O_combustion_air*265
  
  N2O_agriculture_air = satellite[430,]
  N2O_agriculture_air = N2O_agriculture_air*265
  
  SF6_air = satellite[424,]
  SF6_air = SF6_air*23500
  
  HFC_air = satellite[425,]
  
  PFC_air = satellite[426,]
  
  energy_carrier_use = satellite[470,]
  
  ## bind together
  territorial = data.frame(t(CO2_combustion_air),
                           t(CO2_noncombustion_cement_air),
                           t(CO2_noncombustion_lime_air),
                           t(CO2_agriculture_peatdecay_air),
                           t(CO2_waste_biogenic_air),
                           t(CO2_waste_fossil_air),
                           t(CH4_combustion_air),
                           t(CH4_noncombustion_gas_air),
                           t(CH4_noncombustion_oil_air),
                           t(CH4_noncombustion_anthracite_air),
                           t(CH4_noncombustion_bituminouscoal_air),
                           t(CH4_noncombustion_cokingcoal_air),
                           t(CH4_noncombustion_lignite_air),
                           t(CH4_noncombustion_subbituminouscoal_air),
                           t(CH4_noncombustion_oilrefinery_air),
                           t(CH4_agriculture_air),
                           t(CH4_waste_air),
                           t(N2O_combustion_air),
                           t(N2O_agriculture_air),
                           t(SF6_air),
                           t(HFC_air),
                           t(PFC_air),
                           t(energy_carrier_use)) %>%
    rename(CO2_combustion = 1, 
           CO2_noncombustion_cement = 2,
           CO2_noncombustion_lime = 3,
           CO2_agriculture_peatdecay = 4,
           CO2_waste_biogenic = 5,
           CO2_waste_fossil = 6,
           CH4_combustion = 7, 
           CH4_noncombustion_gas = 8,
           CH4_noncombustion_oil = 9,
           CH4_noncombustion_anthracite = 10,
           CH4_noncombustion_bituminouscoal = 11,
           CH4_noncombustion_cokingcoal = 12,
           CH4_noncombustion_lignite = 13,
           CH4_noncombustion_subbituminouscoal = 14,
           CH4_noncombustion_oilrefinery = 15,
           CH4_agriculture = 16,
           CH4_waste = 17,
           N2O_combustion = 18, 
           N2O_agriculture = 19,
           SF6 = 20,
           HFC = 21, PFC = 22, energy = 23)
  
  ## create year column
  year_territorial = as.character(rep(year_current,nrow(territorial)))
  
  ## bind year column, production sector labels and territorial satellite extensions
  territorial_intermediate = as.data.frame(cbind(year_territorial,
                                         Exiobase_T_labels,
                                         territorial)) %>%
    rename(year = year_territorial,
           geo = V1,
           sector = V2) %>%
    select(-coicop,-five_sectors)
  
  ## populate NULL territorial dataframe
  national_territorial = rbind(national_territorial, territorial_intermediate)
  
}

# write national territorial extensions as .csv and .rds files (save to 'data_dir_income_stratified_footprints')
write.csv(national_territorial, paste0(data_dir_income_stratified_footprints, "/national_territorial_ixi.csv"))
write_rds(national_territorial, paste0(data_dir_income_stratified_footprints, "/national_territorial_ixi.rds"))

# write national footprints as .csv and .rds files (save to 'data_dir_income_stratified_footprints')
write.csv(national_fp, paste0(data_dir_income_stratified_footprints, "/national_fp_ixi.csv"))
write_rds(national_fp, paste0(data_dir_income_stratified_footprints, "/national_fp_ixi.rds"))

# calculate quintile shares within each HBS coicop category
shares = join_expenditures %>%
  group_by(coicop,geo,year) %>%
  mutate(share = pps_coicop/sum(pps_coicop))

# join disaggregated EXIOBASE hh final demand dataframe with HBS coicop shares and calculate disaggregated hh final demand using the shares
fd_exiobase = disaggregated_final_demand %>% 
  left_join(shares, by = c("year","geo","coicop","quintile")) %>%
  mutate(disaggregated_fd = value*share) %>%
  select(year,geo,quintile,country_of_production,sector,coicop,disaggregated_fd) %>%
  spread(quintile,disaggregated_fd)

# direct extensions from households
## load EUROSTAT energy use data (no Turkey)
env_ac_pefasu_no_TR = read_csv(paste0(data_dir_income_stratified_footprints, "/env_ac_pefasu_1_Data.csv")) %>%
  filter(TIME == 2015) %>%
  mutate(geo = dplyr::recode(GEO,"Austria" = "AT", 
                             "Belgium" = "BE",
                             "Cyprus" = "CY",
                             "Czechia" = "CZ",
                             "Denmark" = "DK",
                             "Estonia" = "EE",
                             "Finland" = "FI",
                             "France" = "FR",
                             "Germany (until 1990 former territory of the FRG)" = "DE",
                             "Greece" = "EL",
                             "Hungary" = "HU",
                             "Ireland" = "IE",
                             "Italy" = "IT",
                             "Latvia" = "LV",
                             "Lithuania" = "LT",
                             "Luxembourg" = "LU",
                             "Malta" = "MT",
                             "Netherlands" = "NL",
                             "Norway" = "NO",
                             "Poland" = "PL",
                             "Portugal" = "PT",
                             "Romania" = "RO",
                             "Slovakia" = "SK",
                             "Slovenia" = "SI",
                             "Spain" = "ES",
                             "Sweden" = "SE",
                             "United Kingdom" = "UK",
                             "Bulgaria" = "BG",
                             "Croatia" = "HR")) %>%
  select(NACE_R2,geo,Value) %>%
  mutate(Value = parse_number(Value),
         Value = as.numeric(Value)) %>%
  spread(NACE_R2,Value) %>%
  clean_names() %>%
  mutate(HH_HEAT = heating_cooling_activities_by_households/total_activities_by_households,
         HH_TRA = transport_activities_by_households/total_activities_by_households,
         HH_OTH = other_activities_by_households/total_activities_by_households) %>%
  select(geo,HH_HEAT,HH_TRA,HH_OTH) 

## create column for Turkey using Bulgarian shares between HH_HEAT, HH_TRA, and HH_OTH
env_ac_pefasu_TR = env_ac_pefasu_no_TR %>%
  filter(geo == "BG") %>%
  mutate(geo = dplyr::recode(geo,
                             "BG" = "TR"))

## bind EUROSTAT energy use data (no Turkey) with created Turkey column
env_ac_pefasu = rbind(env_ac_pefasu_no_TR,env_ac_pefasu_TR) %>%
  gather(sector,share_of_total_energy,-geo)

## load EUROSTAT emissions data
env_ac_ainah_r2 = read_csv(paste0(data_dir_income_stratified_footprints, "/env_ac_ainah_r2_1_Data.csv")) %>%
  filter(TIME == 2015) %>%
  mutate(geo = dplyr::recode(GEO,"Austria" = "AT", 
                             "Belgium" = "BE",
                             "Cyprus" = "CY",
                             "Czechia" = "CZ",
                             "Denmark" = "DK",
                             "Estonia" = "EE",
                             "Finland" = "FI",
                             "France" = "FR",
                             "Germany (until 1990 former territory of the FRG)" = "DE",
                             "Greece" = "EL",
                             "Hungary" = "HU",
                             "Ireland" = "IE",
                             "Italy" = "IT",
                             "Latvia" = "LV",
                             "Lithuania" = "LT",
                             "Luxembourg" = "LU",
                             "Malta" = "MT",
                             "Netherlands" = "NL",
                             "Norway" = "NO",
                             "Poland" = "PL",
                             "Portugal" = "PT",
                             "Romania" = "RO",
                             "Slovakia" = "SK",
                             "Slovenia" = "SI",
                             "Spain" = "ES",
                             "Sweden" = "SE",
                             "Turkey" = "TR",
                             "United Kingdom" = "UK",
                             "Bulgaria" = "BG",
                             "Croatia" = "HR")) %>%
  select(NACE_R2,AIRPOL,geo,Value) %>%
  mutate(Value = parse_number(Value),
         Value = as.numeric(Value)) %>%
  spread(NACE_R2,Value) %>%
  clean_names() %>%
  mutate(HH_HEAT = heating_cooling_activities_by_households/total_activities_by_households,
         HH_TRA = transport_activities_by_households/total_activities_by_households,
         HH_OTH = other_activities_by_households/total_activities_by_households) %>%
  select(geo,airpol,HH_HEAT,HH_TRA,HH_OTH) 

### create separate dataframe for CO2
env_ac_ainah_r2_co2 = env_ac_ainah_r2 %>%
  filter(airpol == "Carbon dioxide") %>%
  select(-airpol) %>%
  gather(sector,share_of_total_co2,-geo)

### for CH4
env_ac_ainah_r2_ch4 = env_ac_ainah_r2 %>%
  filter(airpol == "Methane") %>%
  select(-airpol) %>%
  gather(sector,share_of_total_ch4,-geo)

### for N2O
env_ac_ainah_r2_n2o = env_ac_ainah_r2 %>%
  filter(airpol == "Nitrous oxide") %>%
  select(-airpol) %>%
  gather(sector,share_of_total_n2o,-geo)

## filter saved EXIOBASE national footprints dataframe, select direct extensions and repeat each cell 3 times
direct_FD_fp_long = national_fp %>%
  filter(fd_category == "Final consumption expenditure by households",
         geo %in% c("AT",
                    "BE", "BG", "CY", "CZ",
                    "DE" , "DK" , "EE" , 
                    "ES" , "FI" , "FR" , 
                    "UK", "EL", "HR" ,
                    "HU" , "IE" , "IT" ,
                    "LT" , "LU" , "LV" ,
                    "MT" , "NL" , "PL" ,
                    "PT" , "TR" , "SK" ,
                    "SI" , "SE" , "RO" ,
                    "NO")) %>%
  select(year,geo,fd_category,direct_FD_co2_combustion,
         direct_FD_co2_noncombustion_cement,
         direct_FD_co2_noncombustion_lime,
         direct_FD_co2_agriculture_peatdecay,
         direct_FD_co2_waste_biogenic,
         direct_FD_co2_waste_fossil,
         direct_FD_ch4_combustion,
         direct_FD_ch4_noncombustion_gas,
         direct_FD_ch4_noncombustion_oil,
         direct_FD_ch4_noncombustion_anthracite,
         direct_FD_ch4_noncombustion_bituminouscoal,
         direct_FD_ch4_noncombustion_cokingcoal,
         direct_FD_ch4_noncombustion_lignite,
         direct_FD_ch4_noncombustion_subbituminouscoal,
         direct_FD_ch4_noncombustion_oilrefinery,
         direct_FD_ch4_agriculture,
         direct_FD_ch4_waste,
         direct_FD_n2o_combustion,
         direct_FD_n2o_agriculture,
         direct_FD_sf6,
         direct_FD_hfc,
         direct_FD_pfc,
         direct_FD_energy) %>%   
  slice(rep(1:n(), each = 3)) 

## create column with direct household sector names (3 times each)
sector = rep(c("HH_HEAT","HH_TRA","HH_OTH"), nrow(direct_FD_fp_long)/3) 

## bind names with EXIOBASE direct extensions data, map hh sectors to COICOP categories, then bind with EUROSTAT energy and emissions data and dis-aggregate EXIOBASE direct extensions data using EUROSTAT energy and emissions shares between the three sectors/categories
direct_FD_fp_long_disagg = cbind(sector,direct_FD_fp_long) %>%
  mutate(coicop = ifelse(sector == "HH_TRA","CP072",
                         ifelse(sector == "HH_HEAT","CP045","CP05")), 
         five_sectors = ifelse(sector == "HH_TRA", "transport",
                               ifelse(sector == "HH_HEAT", "shelter", "manufactured goods"))) %>%
  left_join(env_ac_ainah_r2_co2, by = c("geo","sector")) %>%
  left_join(env_ac_ainah_r2_ch4, by = c("geo","sector")) %>%
  left_join(env_ac_ainah_r2_n2o, by = c("geo","sector")) %>%
  left_join(env_ac_pefasu, by = c("geo","sector")) %>%
  mutate(direct_FD_co2 = (direct_FD_co2_combustion +
                            direct_FD_co2_noncombustion_cement +
                            direct_FD_co2_noncombustion_lime +
                            direct_FD_co2_agriculture_peatdecay +
                            direct_FD_co2_waste_biogenic +
                            direct_FD_co2_waste_fossil)*share_of_total_co2,
         direct_FD_ch4 = (direct_FD_ch4_combustion +
                            direct_FD_ch4_noncombustion_gas +
                            direct_FD_ch4_noncombustion_oil +
                            direct_FD_ch4_noncombustion_anthracite +
                            direct_FD_ch4_noncombustion_bituminouscoal +
                            direct_FD_ch4_noncombustion_cokingcoal +
                            direct_FD_ch4_noncombustion_lignite +
                            direct_FD_ch4_noncombustion_subbituminouscoal +
                            direct_FD_ch4_noncombustion_oilrefinery +
                            direct_FD_ch4_agriculture +
                            direct_FD_ch4_waste)*share_of_total_ch4,
         direct_FD_n2o = (direct_FD_n2o_combustion +
                            direct_FD_n2o_agriculture)*share_of_total_n2o,
         direct_FD_energy = direct_FD_energy*share_of_total_energy) %>%
  left_join(shares, by = c("year","geo","coicop")) %>%
  mutate(disaggregated_direct_FD_co2 = direct_FD_co2*share,
         disaggregated_direct_FD_ch4 = direct_FD_ch4*share,
         disaggregated_direct_FD_n2o = direct_FD_n2o*share,
         disaggregated_direct_FD_energy = direct_FD_energy*share) %>%
  select(year,geo,sector, quintile,
         coicop, five_sectors,
         disaggregated_direct_FD_co2,
         disaggregated_direct_FD_ch4,
         disaggregated_direct_FD_n2o,
         disaggregated_direct_FD_energy) 

## spread quintiles across columns for CO2
direct_FD_co2 = direct_FD_fp_long_disagg %>%
  select(year,geo,sector,quintile,coicop,five_sectors,disaggregated_direct_FD_co2) %>%
  spread(quintile,disaggregated_direct_FD_co2) %>%
  rename(q1_co2 = QUINTILE1,
         q2_co2 = QUINTILE2,
         q3_co2 = QUINTILE3,
         q4_co2 = QUINTILE4,
         q5_co2 = QUINTILE5) %>%
  mutate(q1_co2_domestic = q1_co2,
         q2_co2_domestic = q2_co2,
         q3_co2_domestic = q3_co2,
         q4_co2_domestic = q4_co2,
         q5_co2_domestic = q5_co2,
         co2_total = q1_co2+q2_co2+q3_co2+q4_co2+q5_co2,
         co2_total_domestic = q1_co2_domestic+
           q2_co2_domestic+q3_co2_domestic+
           q4_co2_domestic+q5_co2_domestic)

## spread quintiles across columns for CH4
direct_FD_ch4 = direct_FD_fp_long_disagg %>%
  select(year,geo,sector,quintile,coicop,five_sectors,disaggregated_direct_FD_ch4) %>%
  spread(quintile,disaggregated_direct_FD_ch4) %>%
  rename(q1_ch4 = QUINTILE1,
         q2_ch4 = QUINTILE2,
         q3_ch4 = QUINTILE3,
         q4_ch4 = QUINTILE4,
         q5_ch4 = QUINTILE5) %>%
  mutate(q1_ch4_domestic = q1_ch4,
         q2_ch4_domestic = q2_ch4,
         q3_ch4_domestic = q3_ch4,
         q4_ch4_domestic = q4_ch4,
         q5_ch4_domestic = q5_ch4,
         ch4_total = q1_ch4+q2_ch4+q3_ch4+q4_ch4+q5_ch4,
         ch4_total_domestic = q1_ch4_domestic+
           q2_ch4_domestic+q3_ch4_domestic+
           q4_ch4_domestic+q5_ch4_domestic)

## spread quintiles across columns for N2O
direct_FD_n2o = direct_FD_fp_long_disagg %>%
  select(year,geo,sector,quintile,coicop,five_sectors,disaggregated_direct_FD_n2o) %>%
  spread(quintile,disaggregated_direct_FD_n2o) %>%
  rename(q1_n2o = QUINTILE1,
         q2_n2o = QUINTILE2,
         q3_n2o = QUINTILE3,
         q4_n2o = QUINTILE4,
         q5_n2o = QUINTILE5) %>%
  mutate(q1_n2o_domestic = q1_n2o,
         q2_n2o_domestic = q2_n2o,
         q3_n2o_domestic = q3_n2o,
         q4_n2o_domestic = q4_n2o,
         q5_n2o_domestic = q5_n2o,
         n2o_total = q1_n2o+q2_n2o+q3_n2o+q4_n2o+q5_n2o,
         n2o_total_domestic = q1_n2o_domestic+
           q2_n2o_domestic+q3_n2o_domestic+
           q4_n2o_domestic+q5_n2o_domestic)

## spread quintiles across columns for energy use
direct_FD_energy = direct_FD_fp_long_disagg %>%
  select(year,geo,sector,quintile,coicop,five_sectors,disaggregated_direct_FD_energy) %>%
  spread(quintile,disaggregated_direct_FD_energy) %>%
  rename(q1_energy = QUINTILE1,
         q2_energy = QUINTILE2,
         q3_energy = QUINTILE3,
         q4_energy = QUINTILE4,
         q5_energy = QUINTILE5) %>%
  mutate(q1_energy_domestic = q1_energy,
         q2_energy_domestic = q2_energy,
         q3_energy_domestic = q3_energy,
         q4_energy_domestic = q4_energy,
         q5_energy_domestic = q5_energy,
         energy_total = q1_energy+q2_energy+q3_energy+q4_energy+q5_energy,
         energy_total_domestic = q1_energy_domestic+
           q2_energy_domestic+q3_energy_domestic+
           q4_energy_domestic+q5_energy_domestic)

# join spread direct from hh fd extensions to each other and create co2eq as well
direct_FD_fp_wide = direct_FD_co2 %>%
  left_join(direct_FD_ch4, by = c("year","geo",
                                  "sector","coicop",
                                  "five_sectors")) %>%
  left_join(direct_FD_n2o, by = c("year","geo",
                                  "sector","coicop",
                                  "five_sectors")) %>%
  left_join(direct_FD_energy, by = c("year","geo",
                                     "sector","coicop",
                                     "five_sectors")) %>%
  mutate(country_of_production = geo) %>%
  mutate(q1_co2eq = q1_co2 + q1_ch4 + q1_n2o,
         q2_co2eq = q2_co2 + q2_ch4 + q2_n2o,
         q3_co2eq = q3_co2 + q3_ch4 + q3_n2o,
         q4_co2eq = q4_co2 + q4_ch4 + q4_n2o,
         q5_co2eq = q5_co2 + q5_ch4 + q5_n2o,
         co2eq_total = q1_co2eq +
           q2_co2eq + q3_co2eq +
           q4_co2eq + q5_co2eq,
         q1_co2eq_domestic = q1_co2_domestic + q1_ch4_domestic + q1_n2o_domestic,
         q2_co2eq_domestic = q2_co2_domestic + q2_ch4_domestic + q2_n2o_domestic,
         q3_co2eq_domestic = q3_co2_domestic + q3_ch4_domestic + q3_n2o_domestic,
         q4_co2eq_domestic = q4_co2_domestic + q4_ch4_domestic + q4_n2o_domestic,
         q5_co2eq_domestic = q5_co2_domestic + q5_ch4_domestic + q5_n2o_domestic,
         co2eq_total_domestic = q1_co2eq_domestic +
           q2_co2eq_domestic + q3_co2eq_domestic +
           q4_co2eq_domestic + q5_co2eq_domestic) %>%
  select(-q1_ch4,
         -q2_ch4,
         -q3_ch4,
         -q4_ch4,
         -q5_ch4,
         -ch4_total,
         -q1_ch4_domestic,
         -q2_ch4_domestic,
         -q3_ch4_domestic,
         -q4_ch4_domestic,
         -q5_ch4_domestic,
         -ch4_total_domestic,
         -q1_n2o,
         -q2_n2o,
         -q3_n2o,
         -q4_n2o,
         -q5_n2o,
         -n2o_total,
         -q1_n2o_domestic,
         -q2_n2o_domestic,
         -q3_n2o_domestic,
         -q4_n2o_domestic,
         -q5_n2o_domestic,
         -n2o_total_domestic)

# create intermediate results dataframe (without direct extensions data) by joining dis-aggregated EXIOBASE fd with total intensity vectors (plus domestic, plus Europe) and calculating co2, co2eq and energy use (total, domestic, and Europe)
results = fd_exiobase %>%
  left_join(TIVs, by = c("year", "country_of_production", "coicop", "sector")) %>%
  left_join(europe_TIVs, by = c("year", "country_of_production", "coicop", "sector", "five_sectors")) %>%
  left_join(domestic_TIVs, by = c("year", "geo", "country_of_production", "coicop", "sector", "five_sectors")) %>%
  transmute(year,geo,country_of_production,sector,coicop,five_sectors,
            QUINTILE1,
            QUINTILE2,
            QUINTILE3,
            QUINTILE4,
            QUINTILE5,
            fd_total = QUINTILE1+QUINTILE2+QUINTILE3+QUINTILE4+QUINTILE5,
            TIV_CO2 = TIV_CO2_combustion + 
              TIV_CO2_noncombustion_cement + 
              TIV_CO2_noncombustion_lime +
              TIV_CO2_agriculture_peatdecay +
              TIV_CO2_waste_biogenic + 
              TIV_CO2_waste_fossil,
            q1_co2 = QUINTILE1*TIV_CO2,
            q2_co2 = QUINTILE2*TIV_CO2,
            q3_co2 = QUINTILE3*TIV_CO2,
            q4_co2 = QUINTILE4*TIV_CO2,
            q5_co2 = QUINTILE5*TIV_CO2,
            co2_total = q1_co2+q2_co2+q3_co2+q4_co2+q5_co2,
            TIV_CO2_domestic = TIV_CO2_combustion_domestic +
              TIV_CO2_noncombustion_cement_domestic +
              TIV_CO2_noncombustion_lime_domestic +
              TIV_CO2_agriculture_peatdecay_domestic +
              TIV_CO2_waste_biogenic_domestic +
              TIV_CO2_waste_fossil_domestic,
            q1_co2_domestic = QUINTILE1*TIV_CO2_domestic,
            q2_co2_domestic = QUINTILE2*TIV_CO2_domestic,
            q3_co2_domestic = QUINTILE3*TIV_CO2_domestic,
            q4_co2_domestic = QUINTILE4*TIV_CO2_domestic,
            q5_co2_domestic = QUINTILE5*TIV_CO2_domestic,
            co2_total_domestic = q1_co2_domestic+q2_co2_domestic+q3_co2_domestic+q4_co2_domestic+q5_co2_domestic,
            TIV_CO2_europe = TIV_CO2_combustion_europe +
              TIV_CO2_noncombustion_cement_europe +
              TIV_CO2_noncombustion_lime_europe +
              TIV_CO2_agriculture_peatdecay_europe +
              TIV_CO2_waste_biogenic_europe +
              TIV_CO2_waste_fossil_europe,
            q1_co2_europe = QUINTILE1*(TIV_CO2_europe - TIV_CO2_domestic),
            q2_co2_europe = QUINTILE2*(TIV_CO2_europe - TIV_CO2_domestic),
            q3_co2_europe = QUINTILE3*(TIV_CO2_europe - TIV_CO2_domestic),
            q4_co2_europe = QUINTILE4*(TIV_CO2_europe - TIV_CO2_domestic),
            q5_co2_europe = QUINTILE5*(TIV_CO2_europe - TIV_CO2_domestic),
            co2_total_europe = q1_co2_europe+q2_co2_europe+q3_co2_europe+q4_co2_europe+q5_co2_europe,
            TIV_CO2eq = TIV_CO2 + 
              TIV_CH4_combustion + 
              TIV_CH4_noncombustion_gas +
              TIV_CH4_noncombustion_oil +
              TIV_CH4_noncombustion_anthracite +
              TIV_CH4_noncombustion_bituminouscoal +
              TIV_CH4_noncombustion_cokingcoal +
              TIV_CH4_noncombustion_lignite +
              TIV_CH4_noncombustion_subbituminouscoal +
              TIV_CH4_noncombustion_oilrefinery +
              TIV_CH4_agriculture +
              TIV_CH4_waste +
              TIV_N2O_combustion + 
              TIV_N2O_agriculture +
              TIV_SF6 + TIV_HFC + TIV_PFC,
            q1_co2eq = QUINTILE1*TIV_CO2eq,
            q2_co2eq = QUINTILE2*TIV_CO2eq,
            q3_co2eq = QUINTILE3*TIV_CO2eq,
            q4_co2eq = QUINTILE4*TIV_CO2eq,
            q5_co2eq = QUINTILE5*TIV_CO2eq,
            co2eq_total = q1_co2eq + q2_co2eq + q3_co2eq + q4_co2eq + q5_co2eq,
            TIV_CO2eq_domestic = TIV_CO2_domestic + 
              TIV_CH4_combustion_domestic + 
              TIV_CH4_noncombustion_gas_domestic +
              TIV_CH4_noncombustion_oil_domestic +
              TIV_CH4_noncombustion_anthracite_domestic +
              TIV_CH4_noncombustion_bituminouscoal_domestic +
              TIV_CH4_noncombustion_cokingcoal_domestic +
              TIV_CH4_noncombustion_lignite_domestic +
              TIV_CH4_noncombustion_subbituminouscoal_domestic +
              TIV_CH4_noncombustion_oilrefinery_domestic +
              TIV_CH4_agriculture_domestic +
              TIV_CH4_waste_domestic +
              TIV_N2O_combustion_domestic + 
              TIV_N2O_agriculture_domestic +
              TIV_SF6_domestic + TIV_HFC_domestic + TIV_PFC_domestic,
            q1_co2eq_domestic = QUINTILE1*TIV_CO2eq_domestic,
            q2_co2eq_domestic = QUINTILE2*TIV_CO2eq_domestic,
            q3_co2eq_domestic = QUINTILE3*TIV_CO2eq_domestic,
            q4_co2eq_domestic = QUINTILE4*TIV_CO2eq_domestic,
            q5_co2eq_domestic = QUINTILE5*TIV_CO2eq_domestic,
            co2eq_total_domestic = q1_co2eq_domestic + q2_co2eq_domestic + q3_co2eq_domestic + q4_co2eq_domestic + q5_co2eq_domestic,
            TIV_CO2eq_europe = TIV_CO2_europe + 
              TIV_CH4_combustion_europe + 
              TIV_CH4_noncombustion_gas_europe +
              TIV_CH4_noncombustion_oil_europe +
              TIV_CH4_noncombustion_anthracite_europe +
              TIV_CH4_noncombustion_bituminouscoal_europe +
              TIV_CH4_noncombustion_cokingcoal_europe +
              TIV_CH4_noncombustion_lignite_europe +
              TIV_CH4_noncombustion_subbituminouscoal_europe +
              TIV_CH4_noncombustion_oilrefinery_europe +
              TIV_CH4_agriculture_europe +
              TIV_CH4_waste_europe +
              TIV_N2O_combustion_europe + 
              TIV_N2O_agriculture_europe +
              TIV_SF6_europe + TIV_HFC_europe + TIV_PFC_europe,
            q1_co2eq_europe = QUINTILE1*(TIV_CO2eq_europe - TIV_CO2eq_domestic),
            q2_co2eq_europe = QUINTILE2*(TIV_CO2eq_europe - TIV_CO2eq_domestic),
            q3_co2eq_europe = QUINTILE3*(TIV_CO2eq_europe - TIV_CO2eq_domestic),
            q4_co2eq_europe = QUINTILE4*(TIV_CO2eq_europe - TIV_CO2eq_domestic),
            q5_co2eq_europe = QUINTILE5*(TIV_CO2eq_europe - TIV_CO2eq_domestic),
            co2eq_total_europe = q1_co2eq_europe + q2_co2eq_europe + q3_co2eq_europe + q4_co2eq_europe + q5_co2eq_europe,
            TIV_energy,
            q1_energy = QUINTILE1*TIV_energy,
            q2_energy = QUINTILE2*TIV_energy,
            q3_energy = QUINTILE3*TIV_energy,
            q4_energy = QUINTILE4*TIV_energy,
            q5_energy = QUINTILE5*TIV_energy,
            energy_total = q1_energy+q2_energy+q3_energy+q4_energy+q5_energy,
            TIV_energy_domestic,
            q1_energy_domestic = QUINTILE1*TIV_energy_domestic,
            q2_energy_domestic = QUINTILE2*TIV_energy_domestic,
            q3_energy_domestic = QUINTILE3*TIV_energy_domestic,
            q4_energy_domestic = QUINTILE4*TIV_energy_domestic,
            q5_energy_domestic = QUINTILE5*TIV_energy_domestic,
            energy_total_domestic = q1_energy_domestic+q2_energy_domestic+q3_energy_domestic+q4_energy_domestic+q5_energy_domestic,
            TIV_energy_europe,
            q1_energy_europe = QUINTILE1*(TIV_energy_europe - TIV_energy_domestic),
            q2_energy_europe = QUINTILE2*(TIV_energy_europe - TIV_energy_domestic),
            q3_energy_europe = QUINTILE3*(TIV_energy_europe - TIV_energy_domestic),
            q4_energy_europe = QUINTILE4*(TIV_energy_europe - TIV_energy_domestic),
            q5_energy_europe = QUINTILE5*(TIV_energy_europe - TIV_energy_domestic),
            energy_total_europe = q1_energy_europe+q2_energy_europe+q3_energy_europe+q4_energy_europe+q5_energy_europe)

# bind intermediate results dataframe with direct from hh fd extensions dataframe
results_with_direct_FD_fp = bind_rows(results,direct_FD_fp_wide)

# create compressed results rds file
## clean names of results file
dat_all = results_with_direct_FD_fp %>%
  clean_names()

## convert sector labels to IDs
sectors = dat_all %>%
  distinct(sector) %>%
  mutate(sector_id = row_number())

## write EXIOBASE production sector ids to derived data folder (as .csv file) for use in creating figures in the main paper (commented out atm - not used by current main paper figures)
# write_csv(sectors, paste0(here("/analysis/data/derived/sectors_method1_ixi.csv"))) 

## convert aggregated sector labels to IDs
sectors_agg = dat_all %>%
  distinct(five_sectors) %>%
  mutate(sector_agg_id = row_number())

## write aggregated sector ids to derived data folder (as .csv file) for use in creating figures in the main paper
write_csv(sectors_agg, paste0(here("/analysis/data/derived/sectors_agg_method1_ixi.csv"))) 

## convert COICOP labels to IDs
coicop = dat_all %>%
  distinct(coicop) %>%
  mutate(coicop_id = row_number()) 

# write COICOP consumption category ids to derived data folder (as .csv file) for use in creating figures in the main paper (commented out atm - not used by current main paper figures)
# write_csv(coicop, paste0(here("/analysis/data/derived/coicop_method1_ixi.csv"))) 

# replace sector text labels with numerical IDs (save space)
dat_compressed = dat_all %>%
  left_join(sectors, by="sector") %>%
  left_join(sectors_agg, by="five_sectors") %>%
  left_join(coicop, by = "coicop") %>%
  select(-c(sector, five_sectors,coicop))

# extract sector aggregation
sector_mapping = dat_compressed %>%
  group_by(sector_id) %>%
  summarise(sector_agg_id = first(sector_agg_id),
            coicop_id = first(coicop_id))

# collapse country of origin
dat_results = dat_compressed %>%
  select(-sector_agg_id,-coicop_id) %>%
  group_by(year, geo, sector_id) %>%
  summarise_if(is.numeric, sum, na.rm = TRUE)

# extract final demand and pivot long
cols_final_demand = c("quintile1", "quintile2", "quintile3", "quintile4", "quintile5")
tmp_fd = dat_results %>%
  select(year, geo, sector_id, cols_final_demand) %>%
  pivot_longer(cols = cols_final_demand,
               names_to = "quintile",
               values_to = "fd_me") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract co2 and pivot long
cols_co2 = c("q1_co2", "q2_co2", "q3_co2", "q4_co2", "q5_co2")
tmp_co2 = dat_results %>%
  select(year, geo, sector_id, cols_co2) %>%
  pivot_longer(cols = cols_co2,
               names_to = "quintile",
               values_to = "co2_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract co2 domestic and pivot long
cols_co2_domestic = c("q1_co2_domestic", "q2_co2_domestic", "q3_co2_domestic", "q4_co2_domestic", "q5_co2_domestic")
tmp_co2_domestic = dat_results %>%
  select(year, geo, sector_id, cols_co2_domestic) %>%
  pivot_longer(cols = cols_co2_domestic,
               names_to = "quintile",
               values_to = "co2_domestic_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract co2 europe and pivot long
cols_co2_europe = c("q1_co2_europe", "q2_co2_europe", "q3_co2_europe", "q4_co2_europe", "q5_co2_europe")
tmp_co2_europe = dat_results %>%
  select(year, geo, sector_id, cols_co2_europe) %>%
  pivot_longer(cols = cols_co2_europe,
               names_to = "quintile",
               values_to = "co2_europe_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract co2eq and pivot long
cols_co2eq = c("q1_co2eq", "q2_co2eq", "q3_co2eq", "q4_co2eq", "q5_co2eq")
tmp_co2eq = dat_results %>%
  select(year, geo, sector_id, cols_co2eq) %>%
  pivot_longer(cols = cols_co2eq,
               names_to = "quintile",
               values_to = "co2eq_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract co2eq domestic and pivot long
cols_co2eq_domestic = c("q1_co2eq_domestic", "q2_co2eq_domestic", "q3_co2eq_domestic", "q4_co2eq_domestic", "q5_co2eq_domestic")
tmp_co2eq_domestic = dat_results %>%
  select(year, geo, sector_id, cols_co2eq_domestic) %>%
  pivot_longer(cols = cols_co2eq_domestic,
               names_to = "quintile",
               values_to = "co2eq_domestic_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract co2eq europe and pivot long
cols_co2eq_europe = c("q1_co2eq_europe", "q2_co2eq_europe", "q3_co2eq_europe", "q4_co2eq_europe", "q5_co2eq_europe")
tmp_co2eq_europe = dat_results %>%
  select(year, geo, sector_id, cols_co2eq_europe) %>%
  pivot_longer(cols = cols_co2eq_europe,
               names_to = "quintile",
               values_to = "co2eq_europe_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract energy use and pivot long
cols_energy = c("q1_energy","q2_energy","q3_energy","q4_energy","q5_energy")
tmp_energy = dat_results %>%
  select(year, geo, sector_id, cols_energy) %>%
  pivot_longer(cols = cols_energy,
               names_to = "quintile",
               values_to = "energy_use_TJ") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract energy use domestic and pivot long
cols_energy_domestic = c("q1_energy_domestic","q2_energy_domestic","q3_energy_domestic","q4_energy_domestic","q5_energy_domestic")
tmp_energy_domestic = dat_results %>%
  select(year, geo, sector_id, cols_energy_domestic) %>%
  pivot_longer(cols = cols_energy_domestic,
               names_to = "quintile",
               values_to = "energy_use_domestic_TJ") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract energy use europe and pivot long
cols_energy_europe = c("q1_energy_europe","q2_energy_europe","q3_energy_europe","q4_energy_europe","q5_energy_europe")
tmp_energy_europe = dat_results %>%
  select(year, geo, sector_id, cols_energy_europe) %>%
  pivot_longer(cols = cols_energy_europe,
               names_to = "quintile",
               values_to = "energy_use_europe_TJ") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# recombine pivoted extensions
results_recombined = tmp_fd %>%
  left_join(tmp_co2, by=c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_co2_domestic, by=c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_co2_europe, by = c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_co2eq, by=c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_co2eq_domestic, by=c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_co2eq_europe, by = c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_energy, by=c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_energy_domestic, by=c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_energy_europe, by = c("year", "geo", "sector_id", "quint"))

# finally re-join aggregated sector IDs
results_formatted = results_recombined %>% 
  left_join(sector_mapping, by="sector_id") %>%
  ungroup() %>%
  select(-coicop_id)

# write formatted results files (.csv and .rds) to 'data_dir_income_stratified_footprints'
write.csv(results_formatted, paste0(data_dir_income_stratified_footprints, "/results_formatted_method1_ixi.csv"))
write_rds(results_formatted, paste0(data_dir_income_stratified_footprints, "/results_formatted_method1_ixi.rds"))

################################################### main paper method, EXIOBASE product-by-product version ############################################### ##########################################################################################################################################################

# EXIOBASE product-by-product version

## set study years
years_exb_pxp = c(2005,2010)

## create NULL dataframe for dis-aggregated final demand
disaggregated_final_demand = NULL

## create NULL dataframe for 'total intensity vectors'
TIVs = NULL

## create NULL dataframe for domestic 'total intensity vectors'
domestic_TIVs = NULL

## create NULL dataframe for rest-of-Europe 'total intensity vectors'
europe_TIVs = NULL

## create NULL dataframe for national footprints
national_fp = NULL

## create NULL dataframe for national territorial energy use/emissions
national_territorial = NULL

## 'for' loop which populates the above NULL dataframes
for (i in years_exb_pxp){
  year_current = i
  
  ## EXIOBASE final demand table without labels (.csv file)
  Exiobase_FD =  read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/FD_",year_current,"_pxp.csv"))[,-1]
  
  ## select household (hh) final demand vectors for study countries
  AT = Exiobase_FD[,1]
  BE = Exiobase_FD[,8]
  BG = Exiobase_FD[,15]
  CY = Exiobase_FD[,22]
  CZ = Exiobase_FD[,29]
  DE = Exiobase_FD[,36]
  DK = Exiobase_FD[,43]
  EE = Exiobase_FD[,50]
  EL = Exiobase_FD[,78]
  ES = Exiobase_FD[,57]
  FI = Exiobase_FD[,64]
  FR = Exiobase_FD[,71]
  HR = Exiobase_FD[,85]
  HU = Exiobase_FD[,92]
  IE = Exiobase_FD[,99]
  IT = Exiobase_FD[,106]
  LT = Exiobase_FD[,113]
  LU = Exiobase_FD[,120]
  LV = Exiobase_FD[,127]
  MT = Exiobase_FD[,134]
  NL = Exiobase_FD[,141]
  NO = Exiobase_FD[,288]
  PL = Exiobase_FD[,148]
  PT = Exiobase_FD[,155]
  RO = Exiobase_FD[,162]
  SE = Exiobase_FD[,169]
  SI = Exiobase_FD[,176]
  SK = Exiobase_FD[,183]
  TR = Exiobase_FD[,274]
  UK = Exiobase_FD[,190]
  
  Eurostat_countries = cbind(AT,BE,BG,CY,CZ,DE,DK,EE,EL,ES,FI,FR,HR,HU,IE,IT,LT,LU,LV,MT,NL,NO,PL,PT,RO,SE,SI,SK,TR,UK)
  
  ## read in EXIOBASE production sector labels written and saved in previous code chunk
  Exiobase_T_labels = read.csv(paste0(data_dir_income_stratified_footprints, "/data/Exiobase_T_labels_pxp_w_coicop_mapping.csv")) %>%
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK")) 
  
  ## bind EXIOBASE hh final demand with production sector labels
  hh_fd_with_production_sector_labels = cbind(Exiobase_T_labels,Eurostat_countries) %>% rename(geo = V1, sector = V2)
  
  ## replicate each cell of each country's hh final demand as many times as there are income quantiles in the HBS data - in this case: 5
  cells_repeat = data.frame(hh_fd_with_production_sector_labels %>% slice(rep(1:n(), each = 5))) 
  
  ## create quintile names
  quintiles = data.frame(rep(c("QUINTILE1","QUINTILE2","QUINTILE3","QUINTILE4","QUINTILE5"),200)) %>% rename_at(1,~"quintile")
  
  ## bind replicated hh final demand cells to quintile names
  replicated = cbind(cells_repeat,quintiles) %>% rename(country_of_production = geo)
  
  ## convert to long data
  replicated_long = replicated %>% gather(geo, value,-sector,-coicop,-quintile,-five_sectors,-country_of_production)
  
  ## create year column
  year = as.character(rep(year_current,nrow(replicated_long)))
  
  ## bind year with long hh fd data
  replicated_long = cbind(year,replicated_long)
  
  ## populate NULL 'dis-aggregated_final_demand' dataframe with hh fd from each study year
  disaggregated_final_demand = rbind(disaggregated_final_demand, replicated_long)
  
  # load total intensity vectors
  ## CO2 - combustion - air
  Exiobase_TIV_co2_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_co2_combustion_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_co2_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_combustion_air_", year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_combustion_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_co2_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_combustion_air_", year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_combustion_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_combustion_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_combustion_europe,TIV_CO2_combustion_not_europe)
  
  ## CO2 - noncombustion - cement - air
  Exiobase_TIV_co2_noncombustion_cement_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_co2_noncombustion_cement_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_co2_noncombustion_cement_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_noncombustion_cement_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_noncombustion_cement_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_co2_noncombustion_cement_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_noncombustion_cement_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_noncombustion_cement_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_noncombustion_cement_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_noncombustion_cement_europe,TIV_CO2_noncombustion_cement_not_europe)
  
  ## CO2 - noncombustion - lime - air
  Exiobase_TIV_co2_noncombustion_lime_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_co2_noncombustion_lime_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_co2_noncombustion_lime_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_noncombustion_lime_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_noncombustion_lime_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_co2_noncombustion_lime_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_noncombustion_lime_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_noncombustion_lime_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_noncombustion_lime_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_noncombustion_lime_europe,TIV_CO2_noncombustion_lime_not_europe)
  
  ## CO2 - agriculture - peat decay - air
  Exiobase_TIV_co2_agriculture_peatdecay_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_co2_agriculture_peatdecay_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_co2_agriculture_peatdecay_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_agriculture_peatdecay_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_agriculture_peatdecay_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_co2_agriculture_peatdecay_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_agriculture_peatdecay_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_agriculture_peatdecay_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_agriculture_peatdecay_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_agriculture_peatdecay_europe,TIV_CO2_agriculture_peatdecay_not_europe)
  
  ## CO2 - waste - biogenic - air
  Exiobase_TIV_co2_waste_biogenic_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_co2_biogenic_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_co2_waste_biogenic_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_biogenic_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_waste_biogenic_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_co2_waste_biogenic_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_biogenic_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_waste_biogenic_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_waste_biogenic_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_waste_biogenic_europe,TIV_CO2_waste_biogenic_not_europe)
  
  ## CO2 - waste - fossil - air
  Exiobase_TIV_co2_waste_fossil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_co2_waste_fossil_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_co2_waste_fossil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_waste_fossil_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_waste_fossil_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_co2_waste_fossil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_co2_waste_fossil_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_waste_fossil_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_waste_fossil_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_waste_fossil_europe,TIV_CO2_waste_fossil_not_europe)
  
  ## CH4 - combustion - air
  Exiobase_TIV_ch4_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_combustion_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_combustion_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_combustion_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_combustion_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_combustion_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_combustion_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_combustion_europe,TIV_CH4_combustion_not_europe)
  
  ## CH4 - noncombustion - gas - air
  Exiobase_TIV_ch4_noncombustion_gas_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_gas_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_gas_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_gas_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_gas_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_gas_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_gas_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_gas_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_gas_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_gas_europe,TIV_CH4_noncombustion_gas_not_europe)
  
  ## CH4 - noncombustion - oil - air
  Exiobase_TIV_ch4_noncombustion_oil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_oil_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_oil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_oil_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_oil_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_oil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_oil_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_oil_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_oil_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_oil_europe,TIV_CH4_noncombustion_oil_not_europe)
  
  ## CH4 - noncombustion - anthracite - air
  Exiobase_TIV_ch4_noncombustion_anthracite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_anthracite_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_anthracite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_anthracite_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_anthracite_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_anthracite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_anthracite_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_anthracite_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_anthracite_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_anthracite_europe,TIV_CH4_noncombustion_anthracite_not_europe)
  
  ## CH4 - noncombustion - bituminouscoal - air
  Exiobase_TIV_ch4_noncombustion_bituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_bituminouscoal_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_bituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_bituminouscoal_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_bituminouscoal_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_bituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_bituminouscoal_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_bituminouscoal_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_bituminouscoal_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_bituminouscoal_europe,TIV_CH4_noncombustion_bituminouscoal_not_europe)
  
  ## CH4 - noncombustion - cokingcoal - air
  Exiobase_TIV_ch4_noncombustion_cokingcoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_cokingcoal_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_cokingcoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_cokingcoal_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_cokingcoal_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_cokingcoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_cokingcoal_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_cokingcoal_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_cokingcoal_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_cokingcoal_europe,TIV_CH4_noncombustion_cokingcoal_not_europe)
  
  ## CH4 - noncombustion - lignite - air
  Exiobase_TIV_ch4_noncombustion_lignite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_lignite_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_lignite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_lignite_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_lignite_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_lignite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_lignite_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_lignite_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_lignite_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_lignite_europe,TIV_CH4_noncombustion_lignite_not_europe)
  
  ## CH4 - noncombustion - subbituminouscoal - air
  Exiobase_TIV_ch4_noncombustion_subbituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_subbituminouscoal_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_subbituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_subbituminouscoal_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_subbituminouscoal_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_subbituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_subbituminouscoal_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_subbituminouscoal_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_subbituminouscoal_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_subbituminouscoal_europe,TIV_CH4_noncombustion_subbituminouscoal_not_europe)
  
  ## CH4 - noncombustion - oilrefinery - air
  Exiobase_TIV_ch4_noncombustion_oilrefinery_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_noncombustion_oilrefinery_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_noncombustion_oilrefinery_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_oilrefinery_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_oilrefinery_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_oilrefinery_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_noncombustion_oilrefinery_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_oilrefinery_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_oilrefinery_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_oilrefinery_europe,TIV_CH4_noncombustion_oilrefinery_not_europe)
  
  ## CH4 - agriculture - air
  Exiobase_TIV_ch4_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_agriculture_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_agriculture_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_agriculture_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_agriculture_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_agriculture_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_agriculture_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_agriculture_europe,TIV_CH4_agriculture_not_europe)
  
  ## CH4 - waste - air
  Exiobase_TIV_ch4_waste_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_ch4_CO2eq_waste_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_ch4_waste_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_waste_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_waste_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_ch4_waste_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_ch4_CO2eq_waste_air_", year_current, "_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_waste_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_waste_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_waste_europe,TIV_CH4_waste_not_europe)
  
  ## N2O - combustion - air
  Exiobase_TIV_n2o_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_n2o_CO2eq_combustion_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_n2o_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_n2o_CO2eq_combustion_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_N2O_combustion_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_n2o_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_n2o_CO2eq_combustion_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_N2O_combustion_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_N2O_combustion_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_N2O_combustion_europe,TIV_N2O_combustion_not_europe)
  
  ## N2O - agriculture - air
  Exiobase_TIV_n2o_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_n2o_CO2eq_agriculture_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_n2o_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_n2o_CO2eq_agriculture_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_N2O_agriculture_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_n2o_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_n2o_CO2eq_agriculture_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_N2O_agriculture_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_N2O_agriculture_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_N2O_agriculture_europe,TIV_N2O_agriculture_not_europe)
  
  ## SF6 - air
  Exiobase_TIV_sf6_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_sf6_CO2eq_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_sf6_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_sf6_CO2eq_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_SF6_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_sf6_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_sf6_CO2eq_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_SF6_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_SF6_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_SF6_europe,TIV_SF6_not_europe)
  
  ## HFC - air
  Exiobase_TIV_hfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_hfc_CO2eq_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_hfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_hfc_CO2eq_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_HFC_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_hfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_hfc_CO2eq_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_HFC_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_HFC_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_HFC_europe,TIV_HFC_not_europe)
  
  ## PFC - air
  Exiobase_TIV_pfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_pfc_CO2eq_air_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_pfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_pfc_CO2eq_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_PFC_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_pfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_pfc_CO2eq_air_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_PFC_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_PFC_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_PFC_europe,TIV_PFC_not_europe)
  
  ## energy use
  Exiobase_TIV_energy_use_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_energy_carrier_use_",year_current,"_pxp.csv"))[,-1]
  
  ### domestic part
  Exiobase_TIV_country_breakdown_energy_use_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_energy_carrier_use_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_energy_domestic)
  
  ### non-domestic part
  Exiobase_TIV_europe_breakdown_energy_use_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_pxp/TIV_country_breakdown_energy_carrier_use_",year_current,"_pxp.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_energy_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_energy_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_energy_europe,TIV_energy_not_europe)
  
  # bind production sector labels with total intensity vectors
  TIV_with_labels = cbind(Exiobase_T_labels,
                          t(Exiobase_TIV_co2_combustion_bp),
                          t(Exiobase_TIV_co2_noncombustion_cement_bp),
                          t(Exiobase_TIV_co2_noncombustion_lime_bp),
                          t(Exiobase_TIV_co2_agriculture_peatdecay_bp),
                          t(Exiobase_TIV_co2_waste_biogenic_bp),
                          t(Exiobase_TIV_co2_waste_fossil_bp),
                          t(Exiobase_TIV_ch4_combustion_bp),
                          t(Exiobase_TIV_ch4_noncombustion_gas_bp),
                          t(Exiobase_TIV_ch4_noncombustion_oil_bp),
                          t(Exiobase_TIV_ch4_noncombustion_anthracite_bp),
                          t(Exiobase_TIV_ch4_noncombustion_bituminouscoal_bp),
                          t(Exiobase_TIV_ch4_noncombustion_cokingcoal_bp),
                          t(Exiobase_TIV_ch4_noncombustion_lignite_bp),
                          t(Exiobase_TIV_ch4_noncombustion_subbituminouscoal_bp),
                          t(Exiobase_TIV_ch4_noncombustion_oilrefinery_bp),
                          t(Exiobase_TIV_ch4_agriculture_bp),
                          t(Exiobase_TIV_ch4_waste_bp),
                          t(Exiobase_TIV_n2o_combustion_bp),
                          t(Exiobase_TIV_n2o_agriculture_bp),
                          t(Exiobase_TIV_sf6_bp),
                          t(Exiobase_TIV_hfc_bp),
                          t(Exiobase_TIV_pfc_bp),
                          t(Exiobase_TIV_energy_use_bp)) %>% 
    rename(TIV_CO2_combustion = "t(Exiobase_TIV_co2_combustion_bp)",
           TIV_CO2_noncombustion_cement = "t(Exiobase_TIV_co2_noncombustion_cement_bp)",
           TIV_CO2_noncombustion_lime = "t(Exiobase_TIV_co2_noncombustion_lime_bp)",
           TIV_CO2_agriculture_peatdecay = "t(Exiobase_TIV_co2_agriculture_peatdecay_bp)",
           TIV_CO2_waste_biogenic = "t(Exiobase_TIV_co2_waste_biogenic_bp)",
           TIV_CO2_waste_fossil = "t(Exiobase_TIV_co2_waste_fossil_bp)",
           TIV_CH4_combustion = "t(Exiobase_TIV_ch4_combustion_bp)",
           TIV_CH4_noncombustion_gas = "t(Exiobase_TIV_ch4_noncombustion_gas_bp)",
           TIV_CH4_noncombustion_oil = "t(Exiobase_TIV_ch4_noncombustion_oil_bp)",
           TIV_CH4_noncombustion_anthracite = "t(Exiobase_TIV_ch4_noncombustion_anthracite_bp)",
           TIV_CH4_noncombustion_bituminouscoal = "t(Exiobase_TIV_ch4_noncombustion_bituminouscoal_bp)",
           TIV_CH4_noncombustion_cokingcoal = "t(Exiobase_TIV_ch4_noncombustion_cokingcoal_bp)",
           TIV_CH4_noncombustion_lignite = "t(Exiobase_TIV_ch4_noncombustion_lignite_bp)",
           TIV_CH4_noncombustion_subbituminouscoal = "t(Exiobase_TIV_ch4_noncombustion_subbituminouscoal_bp)",
           TIV_CH4_noncombustion_oilrefinery = "t(Exiobase_TIV_ch4_noncombustion_oilrefinery_bp)",
           TIV_CH4_agriculture = "t(Exiobase_TIV_ch4_agriculture_bp)",
           TIV_CH4_waste = "t(Exiobase_TIV_ch4_waste_bp)",
           TIV_N2O_combustion = "t(Exiobase_TIV_n2o_combustion_bp)",
           TIV_N2O_agriculture = "t(Exiobase_TIV_n2o_agriculture_bp)",
           TIV_SF6 = "t(Exiobase_TIV_sf6_bp)",
           TIV_HFC = "t(Exiobase_TIV_hfc_bp)",
           TIV_PFC = "t(Exiobase_TIV_pfc_bp)",
           TIV_energy = "t(Exiobase_TIV_energy_use_bp)") %>% 
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK"))  
  
  # create year column
  year = as.character(rep(year_current,nrow(TIV_with_labels)))
  
  # bind year with labeled total intensity vectors
  TIVs_intermediate = cbind(year,TIV_with_labels) %>% 
    rename(country_of_production = V1, sector = V2)
  
  # populate NULL total intensity vectors dataframe
  TIVs = rbind(TIVs, TIVs_intermediate)
  
  # bind production sector labels with domestic total intensity vectors
  domestic_TIV_with_labels = cbind(Exiobase_T_labels,
                                   Exiobase_TIV_country_breakdown_co2_combustion_bp,
                                   Exiobase_TIV_country_breakdown_co2_noncombustion_cement_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_co2_noncombustion_lime_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_co2_agriculture_peatdecay_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_co2_waste_biogenic_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_co2_waste_fossil_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_combustion_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_gas_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_oil_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_anthracite_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_bituminouscoal_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_cokingcoal_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_lignite_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_subbituminouscoal_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_oilrefinery_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_agriculture_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_waste_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_n2o_combustion_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_n2o_agriculture_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_sf6_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_hfc_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_pfc_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_energy_use_bp %>% select(-country))  %>% 
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK"),
           country = dplyr::recode(country, "GR" = "EL", "GB" = "UK"))
  
  # create year column for domestic TIVs
  year_domestic = as.character(rep(year_current,nrow(domestic_TIV_with_labels)))
  
  # bind year with labeled domestic total intensity vectors
  TIVs_domestic_intermediate = cbind(year_domestic,domestic_TIV_with_labels) %>% 
    rename(country_of_production = V1, sector = V2, geo = country, year = year_domestic) %>%
    mutate(TIV_CO2_combustion_domestic = as.numeric(TIV_CO2_combustion_domestic),
           TIV_CO2_noncombustion_cement_domestic = as.numeric(TIV_CO2_noncombustion_cement_domestic),
           TIV_CO2_noncombustion_lime_domestic = as.numeric(TIV_CO2_noncombustion_lime_domestic),
           TIV_CO2_agriculture_peatdecay_domestic = as.numeric(TIV_CO2_agriculture_peatdecay_domestic),
           TIV_CO2_waste_biogenic_domestic = as.numeric(TIV_CO2_waste_biogenic_domestic),
           TIV_CO2_waste_fossil_domestic = as.numeric(TIV_CO2_waste_fossil_domestic),
           TIV_CH4_combustion_domestic = as.numeric(TIV_CH4_combustion_domestic),
           TIV_CH4_noncombustion_gas_domestic = as.numeric(TIV_CH4_noncombustion_gas_domestic),
           TIV_CH4_noncombustion_oil_domestic = as.numeric(TIV_CH4_noncombustion_oil_domestic),
           TIV_CH4_noncombustion_anthracite_domestic = as.numeric(TIV_CH4_noncombustion_anthracite_domestic),
           TIV_CH4_noncombustion_bituminouscoal_domestic = as.numeric(TIV_CH4_noncombustion_bituminouscoal_domestic),
           TIV_CH4_noncombustion_cokingcoal_domestic = as.numeric(TIV_CH4_noncombustion_cokingcoal_domestic),
           TIV_CH4_noncombustion_lignite_domestic = as.numeric(TIV_CH4_noncombustion_lignite_domestic),
           TIV_CH4_noncombustion_subbituminouscoal_domestic = as.numeric(TIV_CH4_noncombustion_subbituminouscoal_domestic),
           TIV_CH4_noncombustion_oilrefinery_domestic = as.numeric(TIV_CH4_noncombustion_oilrefinery_domestic),
           TIV_CH4_agriculture_domestic = as.numeric(TIV_CH4_agriculture_domestic),
           TIV_CH4_waste_domestic = as.numeric(TIV_CH4_waste_domestic),
           TIV_N2O_combustion_domestic = as.numeric(TIV_N2O_combustion_domestic),
           TIV_N2O_agriculture_domestic = as.numeric(TIV_N2O_agriculture_domestic),
           TIV_SF6_domestic = as.numeric(TIV_SF6_domestic),
           TIV_HFC_domestic = as.numeric(TIV_HFC_domestic),
           TIV_PFC_domestic = as.numeric(TIV_PFC_domestic),
           TIV_energy_domestic = as.numeric(TIV_energy_domestic))
  
  # populate NULL domestic TIVs dataframe
  domestic_TIVs = rbind(domestic_TIVs, TIVs_domestic_intermediate)
  
  # bind production sector labels with European TIVs
  europe_TIV_with_labels = cbind(Exiobase_T_labels,
                                 Exiobase_TIV_europe_breakdown_co2_combustion-bp,
                                 Exiobase_TIV_europe_breakdown_co2_noncombustion_cement_bp,
                                 Exiobase_TIV_europe_breakdown_co2_noncombustion_lime_bp,
                                 Exiobase_TIV_europe_breakdown_co2_agriculture_peatdecay_bp,
                                 Exiobase_TIV_europe_breakdown_co2_waste_biogenic_bp,
                                 Exiobase_TIV_europe_breakdown_co2_waste_fossil_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_combustion_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_gas_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_oil_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_anthracite_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_bituminouscoal_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_cokingcoal_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_lignite_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_subbituminouscoal_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_oilrefinery_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_agriculture_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_waste_bp,
                                 Exiobase_TIV_europe_breakdown_n2o_combustion_bp,
                                 Exiobase_TIV_europe_breakdown_n2o_agriculture_bp,
                                 Exiobase_TIV_europe_breakdown_sf6_bp,
                                 Exiobase_TIV_europe_breakdown_hfc_bp,
                                 Exiobase_TIV_europe_breakdown_pfc_bp,
                                 Exiobase_TIV_europe_breakdown_energy_use_bp) %>% 
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK")) 
  
  # create year column for European TIVs
  year_europe = as.character(rep(year_current,nrow(europe_TIV_with_labels)))
  
  # bind year with labeled European total intensity vectors
  TIVs_europe_intermediate = cbind(year_europe,europe_TIV_with_labels) %>% 
    rename(country_of_production = V1, sector = V2, year = year_europe) %>%
    mutate(TIV_CO2_combustion_europe = as.numeric(TIV_CO2_combustion_europe),
           TIV_CO2_noncombustion_cement_europe = as.numeric(TIV_CO2_noncombustion_cement_europe),
           TIV_CO2_noncombustion_lime_europe = as.numeric(TIV_CO2_noncombustion_lime_europe),
           TIV_CO2_agriculture_peatdecay_europe = as.numeric(TIV_CO2_agriculture_peatdecay_europe),
           TIV_CO2_waste_biogenic_europe = as.numeric(TIV_CO2_waste_biogenic_europe),
           TIV_CO2_waste_fossil_europe = as.numeric(TIV_CO2_waste_fossil_europe),
           TIV_CH4_combustion_europe = as.numeric(TIV_CH4_combustion_europe),
           TIV_CH4_noncombustion_gas_europe = as.numeric(TIV_CH4_noncombustion_gas_europe),
           TIV_CH4_noncombustion_oil_europe = as.numeric(TIV_CH4_noncombustion_oil_europe),
           TIV_CH4_noncombustion_anthracite_europe = as.numeric(TIV_CH4_noncombustion_anthracite_europe),
           TIV_CH4_noncombustion_bituminouscoal_europe = as.numeric(TIV_CH4_noncombustion_bituminouscoal_europe),
           TIV_CH4_noncombustion_cokingcoal_europe = as.numeric(TIV_CH4_noncombustion_cokingcoal_europe),
           TIV_CH4_noncombustion_lignite_europe = as.numeric(TIV_CH4_noncombustion_lignite_europe),
           TIV_CH4_noncombustion_subbituminouscoal_europe = as.numeric(TIV_CH4_noncombustion_subbituminouscoal_europe),
           TIV_CH4_noncombustion_oilrefinery_europe = as.numeric(TIV_CH4_noncombustion_oilrefinery_europe),
           TIV_CH4_agriculture_europe = as.numeric(TIV_CH4_agriculture_europe),
           TIV_CH4_waste_europe = as.numeric(TIV_CH4_waste_europe),
           TIV_N2O_combustion_europe = as.numeric(TIV_N2O_combustion_europe),
           TIV_N2O_agriculture_europe = as.numeric(TIV_N2O_agriculture_europe),
           TIV_SF6_europe = as.numeric(TIV_SF6_europe),
           TIV_HFC_europe = as.numeric(TIV_HFC_europe),
           TIV_PFC_europe = as.numeric(TIV_PFC_europe),
           TIV_energy_europe = as.numeric(TIV_energy_europe))
  
  # populate NULL Europe TIVs dataframe
  europe_TIVs = rbind(europe_TIVs, TIVs_europe_intermediate)
  
  # calculating total national footprints
  ## read in EXIOBASE final demand labels and calculate national footprints for each study satellite extension
  Exiobase_FD_labels = as.data.frame(t(read.csv(paste0(data_dir_exiobase, "/Exiobase_FD_labels_pxp.csv")))[-1,-3]) %>%
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK")) 
  
  national_CO2_combustion_footprints = Exiobase_FD * t(Exiobase_TIV_co2_combustion_bp)
  
  national_CO2_noncombustion_cement_footprints = Exiobase_FD * t(Exiobase_TIV_co2_noncombustion_cement_bp)
  
  national_CO2_noncombustion_lime_footprints = Exiobase_FD * t(Exiobase_TIV_co2_noncombustion_lime_bp)
  
  national_CO2_agriculture_peatdecay_footprints = Exiobase_FD * t(Exiobase_TIV_co2_agriculture_peatdecay_bp)
  
  national_CO2_waste_biogenic_footprints = Exiobase_FD * t(Exiobase_TIV_co2_waste_biogenic_bp)
  
  national_CO2_waste_fossil_footprints = Exiobase_FD * t(Exiobase_TIV_co2_waste_fossil_bp)

  national_CH4_combustion_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_combustion_bp)
  
  national_CH4_noncombustion_gas_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_gas_bp)
  
  national_CH4_noncombustion_oil_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_oil_bp)
  
  national_CH4_noncombustion_anthracite_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_anthracite_bp)
  
  national_CH4_noncombustion_bituminouscoal_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_bituminouscoal_bp)
  
  national_CH4_noncombustion_cokingcoal_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_cokingcoal_bp)
  
  national_CH4_noncombustion_lignite_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_lignite_bp)
  
  national_CH4_noncombustion_subbituminouscoal_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_subbituminouscoal_bp)
  
  national_CH4_noncombustion_oilrefinery_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_oilrefinery_bp)
  
  national_CH4_agriculture_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_agriculture_bp)
  
  national_CH4_waste_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_waste_bp)
  
  national_N2O_combustion_footprints = Exiobase_FD * t(Exiobase_TIV_n2o_combustion_bp)
  
  national_N2O_agriculture_footprints = Exiobase_FD * t(Exiobase_TIV_n2o_agriculture_bp)
  
  national_SF6_footprints = Exiobase_FD * t(Exiobase_TIV_sf6_bp)
  
  national_HFC_footprints = Exiobase_FD * t(Exiobase_TIV_hfc_bp)
  
  national_PFC_footprints = Exiobase_FD * t(Exiobase_TIV_pfc_bp)
  
  national_energy_footprints = Exiobase_FD * t(Exiobase_TIV_energy_use_bp)
  
  ## bind FD labels and national footprints together
  national_footprints_w_labels = cbind(Exiobase_FD_labels, 
                                       rowSums(t(national_CO2_combustion_footprints)),
                                       rowSums(t(national_CO2_noncombustion_cement_footprints)), 
                                       rowSums(t(national_CO2_noncombustion_lime_footprints)), 
                                       rowSums(t(national_CO2_agriculture_peatdecay_footprints)), 
                                       rowSums(t(national_CO2_waste_biogenic_footprints)), 
                                       rowSums(t(national_CO2_waste_fossil_footprints)),
                                       rowSums(t(national_CH4_combustion_footprints)),
                                       rowSums(t(national_CH4_noncombustion_gas_footprints)),
                                       rowSums(t(national_CH4_noncombustion_oil_footprints)),
                                       rowSums(t(national_CH4_noncombustion_anthracite_footprints)), 
                                       rowSums(t(national_CH4_noncombustion_bituminouscoal_footprints)), 
                                       rowSums(t(national_CH4_noncombustion_cokingcoal_footprints)),
                                       rowSums(t(national_CH4_noncombustion_lignite_footprints)),
                                       rowSums(t(national_CH4_noncombustion_subbituminouscoal_footprints)), 
                                       rowSums(t(national_CH4_noncombustion_oilrefinery_footprints)), 
                                       rowSums(t(national_CH4_agriculture_footprints)),
                                       rowSums(t(national_CH4_waste_footprints)),
                                       rowSums(t(national_N2O_combustion_footprints)),
                                       rowSums(t(national_N2O_agriculture_footprints)),
                                       rowSums(t(national_SF6_footprints)),
                                       rowSums(t(national_HFC_footprints)),
                                       rowSums(t(national_PFC_footprints)),
                                       rowSums(t(national_energy_footprints))) %>%
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK")) 
  
  ## create year column for national footprints
  year_national_fp = as.character(rep(year_current,nrow(national_footprints_w_labels)))

  # satellite extensions direct from household final demand
  ## load satellite extensions direct from household final demand table from 'data_dir_exiobase' and convert to numeric
  direct_FD_extensions = read.csv(paste0(data_dir_exiobase, "/IOT_", year_current, "_pxp/satellite/F_hh.csv", sep = ""),row.names=NULL,as.is=TRUE)[3:1106,3:345]
  direct_FD_extensions[is.na(direct_FD_extensions)]=0
  direct_FD_extensions = mapply(direct_FD_extensions, FUN = as.numeric)
  direct_FD_extensions = matrix(data=direct_FD_extensions,ncol=343,nrow=1104)
  
  ## extract each study satellite extension
  direct_FD_co2_combustion = direct_FD_extensions[24,]
  direct_FD_co2_noncombustion_cement = direct_FD_extensions[93,]
  direct_FD_co2_noncombustion_lime = direct_FD_extensions[94,]
  direct_FD_co2_agriculture_peatdecay = direct_FD_extensions[428,]
  direct_FD_co2_waste_biogenic = direct_FD_extensions[438,]
  direct_FD_co2_waste_fossil = direct_FD_extensions[439,]
  direct_FD_ch4_combustion = direct_FD_extensions[25,]*28
  direct_FD_ch4_noncombustion_gas = direct_FD_extensions[68,]*28
  direct_FD_ch4_noncombustion_oil = direct_FD_extensions[69,]*28
  direct_FD_ch4_noncombustion_anthracite = direct_FD_extensions[70,]*28
  direct_FD_ch4_noncombustion_bituminouscoal = direct_FD_extensions[71,]*28
  direct_FD_ch4_noncombustion_cokingcoal = direct_FD_extensions[72,]*28
  direct_FD_ch4_noncombustion_lignite = direct_FD_extensions[73,]*28
  direct_FD_ch4_noncombustion_subbituminouscoal = direct_FD_extensions[74,]*28
  direct_FD_ch4_noncombustion_oilrefinery = direct_FD_extensions[75,]*28
  direct_FD_ch4_agriculture = direct_FD_extensions[427,]*28
  direct_FD_ch4_waste = direct_FD_extensions[436,]*28
  direct_FD_n2o_combustion = direct_FD_extensions[26,]*265
  direct_FD_n2o_agriculture = direct_FD_extensions[430,]*265
  direct_FD_sf6 = direct_FD_extensions[424,]*23500
  direct_FD_hfc = direct_FD_extensions[425,]
  direct_FD_pfc = direct_FD_extensions[426,]
  direct_FD_energy = direct_FD_extensions[470,]
  
  ## bind all extensions together
  direct_FD_fp = data.frame(direct_FD_co2_combustion,
                            direct_FD_co2_noncombustion_cement,
                            direct_FD_co2_noncombustion_lime,
                            direct_FD_co2_agriculture_peatdecay,
                            direct_FD_co2_waste_biogenic,
                            direct_FD_co2_waste_fossil,
                            direct_FD_ch4_combustion,
                            direct_FD_ch4_noncombustion_gas,
                            direct_FD_ch4_noncombustion_oil,
                            direct_FD_ch4_noncombustion_anthracite,
                            direct_FD_ch4_noncombustion_bituminouscoal,
                            direct_FD_ch4_noncombustion_cokingcoal,
                            direct_FD_ch4_noncombustion_lignite,
                            direct_FD_ch4_noncombustion_subbituminouscoal,
                            direct_FD_ch4_noncombustion_oilrefinery,
                            direct_FD_ch4_agriculture,
                            direct_FD_ch4_waste,
                            direct_FD_n2o_combustion,
                            direct_FD_n2o_agriculture,
                            direct_FD_sf6,
                            direct_FD_hfc,
                            direct_FD_pfc,
                            direct_FD_energy)
  
  ## bind national footprints and direct extensions from hh final demand together (with year column)
  national_fp_intermediate = as.data.frame(cbind(year_national_fp,
                                         national_footprints_w_labels,
                                         direct_FD_fp)) %>% 
    rename(year = year_national_fp,
           geo = V1, 
           fd_category = V2, 
           co2_combustion = "rowSums(t(national_CO2_combustion_footprints))",
           co2_noncombustion_cement = "rowSums(t(national_CO2_noncombustion_cement_footprints))",
           co2_noncombustion_lime = "rowSums(t(national_CO2_noncombustion_lime_footprints))",
           co2_agriculture_peatdecay = "rowSums(t(national_CO2_agriculture_peatdecay_footprints))",
           co2_waste_biogenic = "rowSums(t(national_CO2_waste_biogenic_footprints))",
           co2_waste_fossil = "rowSums(t(national_CO2_waste_fossil_footprints))",
           ch4_combustion = "rowSums(t(national_CH4_combustion_footprints))",
           ch4_noncombustion_gas = "rowSums(t(national_CH4_noncombustion_gas_footprints))",
           ch4_noncombustion_oil = "rowSums(t(national_CH4_noncombustion_oil_footprints))",
           ch4_noncombustion_anthracite = "rowSums(t(national_CH4_noncombustion_anthracite_footprints))",
           ch4_noncombustion_bituminouscoal = "rowSums(t(national_CH4_noncombustion_bituminouscoal_footprints))",
           ch4_noncombustion_cokingcoal = "rowSums(t(national_CH4_noncombustion_cokingcoal_footprints))",
           ch4_noncombustion_lignite = "rowSums(t(national_CH4_noncombustion_lignite_footprints))",
           ch4_noncombustion_subbituminouscoal = "rowSums(t(national_CH4_noncombustion_subbituminouscoal_footprints))",
           ch4_noncombustion_oilrefinery = "rowSums(t(national_CH4_noncombustion_oilrefinery_footprints))",
           ch4_agriculture = "rowSums(t(national_CH4_agriculture_footprints))",
           ch4_waste = "rowSums(t(national_CH4_waste_footprints))",
           n2o_combustion = "rowSums(t(national_N2O_combustion_footprints))",
           n2o_agriculture = "rowSums(t(national_N2O_agriculture_footprints))",
           sf6 = "rowSums(t(national_SF6_footprints))",
           hfc = "rowSums(t(national_HFC_footprints))",
           pfc = "rowSums(t(national_PFC_footprints))",
           energy = "rowSums(t(national_energy_footprints))") %>%
    select(year,
           geo,
           fd_category,
           co2_combustion,
           direct_FD_co2_combustion,
           co2_noncombustion_cement,
           direct_FD_co2_noncombustion_cement,
           co2_noncombustion_lime,
           direct_FD_co2_noncombustion_lime,
           co2_agriculture_peatdecay,
           direct_FD_co2_agriculture_peatdecay,
           co2_waste_biogenic,
           direct_FD_co2_waste_biogenic,
           co2_waste_fossil,
           direct_FD_co2_waste_fossil,
           ch4_combustion,
           direct_FD_ch4_combustion,
           ch4_noncombustion_gas,
           direct_FD_ch4_noncombustion_gas,
           ch4_noncombustion_oil,
           direct_FD_ch4_noncombustion_oil,
           ch4_noncombustion_anthracite,
           direct_FD_ch4_noncombustion_anthracite,
           ch4_noncombustion_bituminouscoal,
           direct_FD_ch4_noncombustion_bituminouscoal,
           ch4_noncombustion_cokingcoal,
           direct_FD_ch4_noncombustion_cokingcoal,
           ch4_noncombustion_lignite,
           direct_FD_ch4_noncombustion_lignite,
           ch4_noncombustion_subbituminouscoal,
           direct_FD_ch4_noncombustion_subbituminouscoal,
           ch4_noncombustion_oilrefinery,
           direct_FD_ch4_noncombustion_oilrefinery,
           ch4_agriculture,
           direct_FD_ch4_agriculture,
           ch4_waste,
           direct_FD_ch4_waste,
           n2o_combustion,
           direct_FD_n2o_combustion,
           n2o_agriculture,
           direct_FD_n2o_agriculture,
           sf6,
           direct_FD_sf6,
           hfc,
           direct_FD_hfc,
           pfc,
           direct_FD_pfc,
           energy,
           direct_FD_energy)
  
  ## populate NULL national footprints dataframe
  national_fp = rbind(national_fp, national_fp_intermediate)
  
  # national territorial
  ## load saved satellite extensions table (as .csv file) from 'data_dir_exiobase' and extract each study satellite extension
  satellite = read.csv(paste0(data_dir_exiobase, "/IOT_", year_current, "_pxp/satellite/satellite_",year_current,"_pxp.csv"))[,-1]
  
  CO2_combustion_air = satellite[24,]
  
  CO2_noncombustion_cement_air = satellite[93,]
  
  CO2_noncombustion_lime_air = satellite[94,]
  
  CO2_agriculture_peatdecay_air = satellite[428,]
  
  CO2_waste_biogenic_air = satellite[438,]
  
  CO2_waste_fossil_air = satellite[439,]
  
  CH4_combustion_air = satellite[25,]
  CH4_combustion_air = CH4_combustion_air*28
  
  CH4_noncombustion_gas_air = satellite[68,]
  CH4_noncombustion_gas_air = CH4_noncombustion_gas_air*28
  
  CH4_noncombustion_oil_air = satellite[69,]
  CH4_noncombustion_oil_air = CH4_noncombustion_oil_air*28
  
  CH4_noncombustion_anthracite_air = satellite[70,]
  CH4_noncombustion_anthracite_air = CH4_noncombustion_anthracite_air*28
  
  CH4_noncombustion_bituminouscoal_air = satellite[71,]
  CH4_noncombustion_bituminouscoal_air = CH4_noncombustion_bituminouscoal_air*28
  
  CH4_noncombustion_cokingcoal_air = satellite[72,]
  CH4_noncombustion_cokingcoal_air = CH4_noncombustion_cokingcoal_air*28
  
  CH4_noncombustion_lignite_air = satellite[73,]
  CH4_noncombustion_lignite_air = CH4_noncombustion_lignite_air*28
  
  CH4_noncombustion_subbituminouscoal_air = satellite[74,]
  CH4_noncombustion_subbituminouscoal_air = CH4_noncombustion_subbituminouscoal_air*28
  
  CH4_noncombustion_oilrefinery_air = satellite[75,]
  CH4_noncombustion_oilrefinery_air = CH4_noncombustion_oilrefinery_air*28
  
  CH4_agriculture_air = satellite[427,]
  CH4_agriculture_air = CH4_agriculture_air*28
  
  CH4_waste_air = satellite[436,]
  CH4_waste_air = CH4_waste_air*28
  
  N2O_combustion_air = satellite[26,]
  N2O_combustion_air = N2O_combustion_air*265
  
  N2O_agriculture_air = satellite[430,]
  N2O_agriculture_air = N2O_agriculture_air*265
  
  SF6_air = satellite[424,]
  SF6_air = SF6_air*23500
  
  HFC_air = satellite[425,]
  
  PFC_air = satellite[426,]
  
  energy_carrier_use = satellite[470,]
  
  ## bind together
  territorial = data.frame(t(CO2_combustion_air),
                           t(CO2_noncombustion_cement_air),
                           t(CO2_noncombustion_lime_air),
                           t(CO2_agriculture_peatdecay_air),
                           t(CO2_waste_biogenic_air),
                           t(CO2_waste_fossil_air),
                           t(CH4_combustion_air),
                           t(CH4_noncombustion_gas_air),
                           t(CH4_noncombustion_oil_air),
                           t(CH4_noncombustion_anthracite_air),
                           t(CH4_noncombustion_bituminouscoal_air),
                           t(CH4_noncombustion_cokingcoal_air),
                           t(CH4_noncombustion_lignite_air),
                           t(CH4_noncombustion_subbituminouscoal_air),
                           t(CH4_noncombustion_oilrefinery_air),
                           t(CH4_agriculture_air),
                           t(CH4_waste_air),
                           t(N2O_combustion_air),
                           t(N2O_agriculture_air),
                           t(SF6_air),
                           t(HFC_air),
                           t(PFC_air),
                           t(energy_carrier_use)) %>%
    rename(CO2_combustion = 1, 
           CO2_noncombustion_cement = 2,
           CO2_noncombustion_lime = 3,
           CO2_agriculture_peatdecay = 4,
           CO2_waste_biogenic = 5,
           CO2_waste_fossil = 6,
           CH4_combustion = 7, 
           CH4_noncombustion_gas = 8,
           CH4_noncombustion_oil = 9,
           CH4_noncombustion_anthracite = 10,
           CH4_noncombustion_bituminouscoal = 11,
           CH4_noncombustion_cokingcoal = 12,
           CH4_noncombustion_lignite = 13,
           CH4_noncombustion_subbituminouscoal = 14,
           CH4_noncombustion_oilrefinery = 15,
           CH4_agriculture = 16,
           CH4_waste = 17,
           N2O_combustion = 18, 
           N2O_agriculture = 19,
           SF6 = 20,
           HFC = 21, PFC = 22, energy = 23)
  
  ## create year column
  year_territorial = as.character(rep(year_current,nrow(territorial)))
  
  ## bind year column, production sector labels and territorial satellite extensions
  territorial_intermediate = as.data.frame(cbind(year_territorial,
                                         Exiobase_T_labels,
                                         territorial)) %>%
    rename(year = year_territorial,
           geo = V1,
           sector = V2) %>%
    select(-coicop,-five_sectors)
  
  ## populate NULL territorial dataframe
  national_territorial = rbind(national_territorial, territorial_intermediate)
  
}

# write national territorial extensions as .csv and .rds files (save to 'data_dir_income_stratified_footprints')
write.csv(national_territorial, paste0(data_dir_income_stratified_footprints, "/national_territorial_pxp.csv"))
write_rds(national_territorial, paste0(data_dir_income_stratified_footprints, "/national_territorial_pxp.rds"))

# write national footprints as .csv and .rds files (save to 'data_dir_income_stratified_footprints')
write.csv(national_fp, paste0(data_dir_income_stratified_footprints, "/national_fp_pxp.csv"))
write_rds(national_fp, paste0(data_dir_income_stratified_footprints, "/national_fp_pxp.rds"))

# calculate quintile shares within each HBS coicop category
shares = join_expenditures %>%
  group_by(coicop,geo,year) %>%
  mutate(share = pps_coicop/sum(pps_coicop))

# join disaggregated EXIOBASE hh final demand dataframe with HBS coicop shares and calculate disaggregated hh final demand using the shares
fd_exiobase = disaggregated_final_demand %>% 
  left_join(shares, by = c("year","geo","coicop","quintile")) %>%
  mutate(disaggregated_fd = value*share) %>%
  select(year,geo,quintile,country_of_production,sector,coicop,disaggregated_fd) %>%
  spread(quintile,disaggregated_fd)

# direct extensions from households
## load EUROSTAT energy use data (no Turkey)
env_ac_pefasu_no_TR = read_csv(paste0(data_dir_income_stratified_footprints, "/env_ac_pefasu_1_Data.csv")) %>%
  filter(TIME == 2015) %>%
  mutate(geo = dplyr::recode(GEO,"Austria" = "AT", 
                             "Belgium" = "BE",
                             "Cyprus" = "CY",
                             "Czechia" = "CZ",
                             "Denmark" = "DK",
                             "Estonia" = "EE",
                             "Finland" = "FI",
                             "France" = "FR",
                             "Germany (until 1990 former territory of the FRG)" = "DE",
                             "Greece" = "EL",
                             "Hungary" = "HU",
                             "Ireland" = "IE",
                             "Italy" = "IT",
                             "Latvia" = "LV",
                             "Lithuania" = "LT",
                             "Luxembourg" = "LU",
                             "Malta" = "MT",
                             "Netherlands" = "NL",
                             "Norway" = "NO",
                             "Poland" = "PL",
                             "Portugal" = "PT",
                             "Romania" = "RO",
                             "Slovakia" = "SK",
                             "Slovenia" = "SI",
                             "Spain" = "ES",
                             "Sweden" = "SE",
                             "United Kingdom" = "UK",
                             "Bulgaria" = "BG",
                             "Croatia" = "HR")) %>%
  select(NACE_R2,geo,Value) %>%
  mutate(Value = parse_number(Value),
         Value = as.numeric(Value)) %>%
  spread(NACE_R2,Value) %>%
  clean_names() %>%
  mutate(HH_HEAT = heating_cooling_activities_by_households/total_activities_by_households,
         HH_TRA = transport_activities_by_households/total_activities_by_households,
         HH_OTH = other_activities_by_households/total_activities_by_households) %>%
  select(geo,HH_HEAT,HH_TRA,HH_OTH) 

## create column for Turkey using Bulgarian shares between HH_HEAT, HH_TRA, and HH_OTH
env_ac_pefasu_TR = env_ac_pefasu_no_TR %>%
  filter(geo == "BG") %>%
  mutate(geo = dplyr::recode(geo,
                             "BG" = "TR"))

## bind EUROSTAT energy use data (no Turkey) with created Turkey column
env_ac_pefasu = rbind(env_ac_pefasu_no_TR,env_ac_pefasu_TR) %>%
  gather(sector,share_of_total_energy,-geo)

## load EUROSTAT emissions data
env_ac_ainah_r2 = read_csv(paste0(data_dir_income_stratified_footprints, "/env_ac_ainah_r2_1_Data.csv")) %>%
  filter(TIME == 2015) %>%
  mutate(geo = dplyr::recode(GEO,"Austria" = "AT", 
                             "Belgium" = "BE",
                             "Cyprus" = "CY",
                             "Czechia" = "CZ",
                             "Denmark" = "DK",
                             "Estonia" = "EE",
                             "Finland" = "FI",
                             "France" = "FR",
                             "Germany (until 1990 former territory of the FRG)" = "DE",
                             "Greece" = "EL",
                             "Hungary" = "HU",
                             "Ireland" = "IE",
                             "Italy" = "IT",
                             "Latvia" = "LV",
                             "Lithuania" = "LT",
                             "Luxembourg" = "LU",
                             "Malta" = "MT",
                             "Netherlands" = "NL",
                             "Norway" = "NO",
                             "Poland" = "PL",
                             "Portugal" = "PT",
                             "Romania" = "RO",
                             "Slovakia" = "SK",
                             "Slovenia" = "SI",
                             "Spain" = "ES",
                             "Sweden" = "SE",
                             "Turkey" = "TR",
                             "United Kingdom" = "UK",
                             "Bulgaria" = "BG",
                             "Croatia" = "HR")) %>%
  select(NACE_R2,AIRPOL,geo,Value) %>%
  mutate(Value = parse_number(Value),
         Value = as.numeric(Value)) %>%
  spread(NACE_R2,Value) %>%
  clean_names() %>%
  mutate(HH_HEAT = heating_cooling_activities_by_households/total_activities_by_households,
         HH_TRA = transport_activities_by_households/total_activities_by_households,
         HH_OTH = other_activities_by_households/total_activities_by_households) %>%
  select(geo,airpol,HH_HEAT,HH_TRA,HH_OTH) 

### create separate dataframe for CO2
env_ac_ainah_r2_co2 = env_ac_ainah_r2 %>%
  filter(airpol == "Carbon dioxide") %>%
  select(-airpol) %>%
  gather(sector,share_of_total_co2,-geo)

### for CH4
env_ac_ainah_r2_ch4 = env_ac_ainah_r2 %>%
  filter(airpol == "Methane") %>%
  select(-airpol) %>%
  gather(sector,share_of_total_ch4,-geo)

### for N2O
env_ac_ainah_r2_n2o = env_ac_ainah_r2 %>%
  filter(airpol == "Nitrous oxide") %>%
  select(-airpol) %>%
  gather(sector,share_of_total_n2o,-geo)

## filter saved EXIOBASE national footprints dataframe, select direct extensions and repeat each cell 3 times
direct_FD_fp_long = national_fp %>%
  filter(fd_category == "Final consumption expenditure by households",
         geo %in% c("AT",
                    "BE", "BG", "CY", "CZ",
                    "DE" , "DK" , "EE" , 
                    "ES" , "FI" , "FR" , 
                    "UK", "EL", "HR" ,
                    "HU" , "IE" , "IT" ,
                    "LT" , "LU" , "LV" ,
                    "MT" , "NL" , "PL" ,
                    "PT" , "TR" , "SK" ,
                    "SI" , "SE" , "RO" ,
                    "NO")) %>%
  select(year,geo,fd_category,direct_FD_co2_combustion,
         direct_FD_co2_noncombustion_cement,
         direct_FD_co2_noncombustion_lime,
         direct_FD_co2_agriculture_peatdecay,
         direct_FD_co2_waste_biogenic,
         direct_FD_co2_waste_fossil,
         direct_FD_ch4_combustion,
         direct_FD_ch4_noncombustion_gas,
         direct_FD_ch4_noncombustion_oil,
         direct_FD_ch4_noncombustion_anthracite,
         direct_FD_ch4_noncombustion_bituminouscoal,
         direct_FD_ch4_noncombustion_cokingcoal,
         direct_FD_ch4_noncombustion_lignite,
         direct_FD_ch4_noncombustion_subbituminouscoal,
         direct_FD_ch4_noncombustion_oilrefinery,
         direct_FD_ch4_agriculture,
         direct_FD_ch4_waste,
         direct_FD_n2o_combustion,
         direct_FD_n2o_agriculture,
         direct_FD_sf6,
         direct_FD_hfc,
         direct_FD_pfc,
         direct_FD_energy) %>%   
  slice(rep(1:n(), each = 3)) 

## create column with direct household sector names (3 times each)
sector = rep(c("HH_HEAT","HH_TRA","HH_OTH"), nrow(direct_FD_fp_long)/3) 

## bind names with EXIOBASE direct extensions data, map hh sectors to COICOP categories, then bind with EUROSTAT energy and emissions data and dis-aggregate EXIOBASE direct extensions data using EUROSTAT energy and emissions shares between the three sectors/categories
direct_FD_fp_long_disagg = cbind(sector,direct_FD_fp_long) %>%
  mutate(coicop = ifelse(sector == "HH_TRA","CP072",
                         ifelse(sector == "HH_HEAT","CP045","CP05")), 
         five_sectors = ifelse(sector == "HH_TRA", "transport",
                               ifelse(sector == "HH_HEAT", "shelter", "manufactured goods"))) %>%
  left_join(env_ac_ainah_r2_co2, by = c("geo","sector")) %>%
  left_join(env_ac_ainah_r2_ch4, by = c("geo","sector")) %>%
  left_join(env_ac_ainah_r2_n2o, by = c("geo","sector")) %>%
  left_join(env_ac_pefasu, by = c("geo","sector")) %>%
  mutate(direct_FD_co2 = (direct_FD_co2_combustion +
                            direct_FD_co2_noncombustion_cement +
                            direct_FD_co2_noncombustion_lime +
                            direct_FD_co2_agriculture_peatdecay +
                            direct_FD_co2_waste_biogenic +
                            direct_FD_co2_waste_fossil)*share_of_total_co2,
         direct_FD_ch4 = (direct_FD_ch4_combustion +
                            direct_FD_ch4_noncombustion_gas +
                            direct_FD_ch4_noncombustion_oil +
                            direct_FD_ch4_noncombustion_anthracite +
                            direct_FD_ch4_noncombustion_bituminouscoal +
                            direct_FD_ch4_noncombustion_cokingcoal +
                            direct_FD_ch4_noncombustion_lignite +
                            direct_FD_ch4_noncombustion_subbituminouscoal +
                            direct_FD_ch4_noncombustion_oilrefinery +
                            direct_FD_ch4_agriculture +
                            direct_FD_ch4_waste)*share_of_total_ch4,
         direct_FD_n2o = (direct_FD_n2o_combustion +
                            direct_FD_n2o_agriculture)*share_of_total_n2o,
         direct_FD_energy = direct_FD_energy*share_of_total_energy) %>%
  left_join(shares, by = c("year","geo","coicop")) %>%
  mutate(disaggregated_direct_FD_co2 = direct_FD_co2*share,
         disaggregated_direct_FD_ch4 = direct_FD_ch4*share,
         disaggregated_direct_FD_n2o = direct_FD_n2o*share,
         disaggregated_direct_FD_energy = direct_FD_energy*share) %>%
  select(year,geo,sector, quintile,
         coicop, five_sectors,
         disaggregated_direct_FD_co2,
         disaggregated_direct_FD_ch4,
         disaggregated_direct_FD_n2o,
         disaggregated_direct_FD_energy) 

## spread quintiles across columns for CO2
direct_FD_co2 = direct_FD_fp_long_disagg %>%
  select(year,geo,sector,quintile,coicop,five_sectors,disaggregated_direct_FD_co2) %>%
  spread(quintile,disaggregated_direct_FD_co2) %>%
  rename(q1_co2 = QUINTILE1,
         q2_co2 = QUINTILE2,
         q3_co2 = QUINTILE3,
         q4_co2 = QUINTILE4,
         q5_co2 = QUINTILE5) %>%
  mutate(q1_co2_domestic = q1_co2,
         q2_co2_domestic = q2_co2,
         q3_co2_domestic = q3_co2,
         q4_co2_domestic = q4_co2,
         q5_co2_domestic = q5_co2,
         co2_total = q1_co2+q2_co2+q3_co2+q4_co2+q5_co2,
         co2_total_domestic = q1_co2_domestic+
           q2_co2_domestic+q3_co2_domestic+
           q4_co2_domestic+q5_co2_domestic)

## spread quintiles across columns for CH4
direct_FD_ch4 = direct_FD_fp_long_disagg %>%
  select(year,geo,sector,quintile,coicop,five_sectors,disaggregated_direct_FD_ch4) %>%
  spread(quintile,disaggregated_direct_FD_ch4) %>%
  rename(q1_ch4 = QUINTILE1,
         q2_ch4 = QUINTILE2,
         q3_ch4 = QUINTILE3,
         q4_ch4 = QUINTILE4,
         q5_ch4 = QUINTILE5) %>%
  mutate(q1_ch4_domestic = q1_ch4,
         q2_ch4_domestic = q2_ch4,
         q3_ch4_domestic = q3_ch4,
         q4_ch4_domestic = q4_ch4,
         q5_ch4_domestic = q5_ch4,
         ch4_total = q1_ch4+q2_ch4+q3_ch4+q4_ch4+q5_ch4,
         ch4_total_domestic = q1_ch4_domestic+
           q2_ch4_domestic+q3_ch4_domestic+
           q4_ch4_domestic+q5_ch4_domestic)

## spread quintiles across columns for N2O
direct_FD_n2o = direct_FD_fp_long_disagg %>%
  select(year,geo,sector,quintile,coicop,five_sectors,disaggregated_direct_FD_n2o) %>%
  spread(quintile,disaggregated_direct_FD_n2o) %>%
  rename(q1_n2o = QUINTILE1,
         q2_n2o = QUINTILE2,
         q3_n2o = QUINTILE3,
         q4_n2o = QUINTILE4,
         q5_n2o = QUINTILE5) %>%
  mutate(q1_n2o_domestic = q1_n2o,
         q2_n2o_domestic = q2_n2o,
         q3_n2o_domestic = q3_n2o,
         q4_n2o_domestic = q4_n2o,
         q5_n2o_domestic = q5_n2o,
         n2o_total = q1_n2o+q2_n2o+q3_n2o+q4_n2o+q5_n2o,
         n2o_total_domestic = q1_n2o_domestic+
           q2_n2o_domestic+q3_n2o_domestic+
           q4_n2o_domestic+q5_n2o_domestic)

## spread quintiles across columns for energy use
direct_FD_energy = direct_FD_fp_long_disagg %>%
  select(year,geo,sector,quintile,coicop,five_sectors,disaggregated_direct_FD_energy) %>%
  spread(quintile,disaggregated_direct_FD_energy) %>%
  rename(q1_energy = QUINTILE1,
         q2_energy = QUINTILE2,
         q3_energy = QUINTILE3,
         q4_energy = QUINTILE4,
         q5_energy = QUINTILE5) %>%
  mutate(q1_energy_domestic = q1_energy,
         q2_energy_domestic = q2_energy,
         q3_energy_domestic = q3_energy,
         q4_energy_domestic = q4_energy,
         q5_energy_domestic = q5_energy,
         energy_total = q1_energy+q2_energy+q3_energy+q4_energy+q5_energy,
         energy_total_domestic = q1_energy_domestic+
           q2_energy_domestic+q3_energy_domestic+
           q4_energy_domestic+q5_energy_domestic)

# join spread direct from hh fd extensions to each other and create co2eq as well
direct_FD_fp_wide = direct_FD_co2 %>%
  left_join(direct_FD_ch4, by = c("year","geo",
                                  "sector","coicop",
                                  "five_sectors")) %>%
  left_join(direct_FD_n2o, by = c("year","geo",
                                  "sector","coicop",
                                  "five_sectors")) %>%
  left_join(direct_FD_energy, by = c("year","geo",
                                     "sector","coicop",
                                     "five_sectors")) %>%
  mutate(country_of_production = geo) %>%
  mutate(q1_co2eq = q1_co2 + q1_ch4 + q1_n2o,
         q2_co2eq = q2_co2 + q2_ch4 + q2_n2o,
         q3_co2eq = q3_co2 + q3_ch4 + q3_n2o,
         q4_co2eq = q4_co2 + q4_ch4 + q4_n2o,
         q5_co2eq = q5_co2 + q5_ch4 + q5_n2o,
         co2eq_total = q1_co2eq +
           q2_co2eq + q3_co2eq +
           q4_co2eq + q5_co2eq,
         q1_co2eq_domestic = q1_co2_domestic + q1_ch4_domestic + q1_n2o_domestic,
         q2_co2eq_domestic = q2_co2_domestic + q2_ch4_domestic + q2_n2o_domestic,
         q3_co2eq_domestic = q3_co2_domestic + q3_ch4_domestic + q3_n2o_domestic,
         q4_co2eq_domestic = q4_co2_domestic + q4_ch4_domestic + q4_n2o_domestic,
         q5_co2eq_domestic = q5_co2_domestic + q5_ch4_domestic + q5_n2o_domestic,
         co2eq_total_domestic = q1_co2eq_domestic +
           q2_co2eq_domestic + q3_co2eq_domestic +
           q4_co2eq_domestic + q5_co2eq_domestic) %>%
  select(-q1_ch4,
         -q2_ch4,
         -q3_ch4,
         -q4_ch4,
         -q5_ch4,
         -ch4_total,
         -q1_ch4_domestic,
         -q2_ch4_domestic,
         -q3_ch4_domestic,
         -q4_ch4_domestic,
         -q5_ch4_domestic,
         -ch4_total_domestic,
         -q1_n2o,
         -q2_n2o,
         -q3_n2o,
         -q4_n2o,
         -q5_n2o,
         -n2o_total,
         -q1_n2o_domestic,
         -q2_n2o_domestic,
         -q3_n2o_domestic,
         -q4_n2o_domestic,
         -q5_n2o_domestic,
         -n2o_total_domestic)

# create intermediate results dataframe (without direct extensions data) by joining dis-aggregated EXIOBASE fd with total intensity vectors (plus domestic, plus Europe) and calculating co2, co2eq and energy use (total, domestic, and Europe)
results = fd_exiobase %>%
  left_join(TIVs, by = c("year", "country_of_production", "coicop", "sector")) %>%
  left_join(europe_TIVs, by = c("year", "country_of_production", "coicop", "sector", "five_sectors")) %>%
  left_join(domestic_TIVs, by = c("year", "geo", "country_of_production", "coicop", "sector", "five_sectors")) %>%
  transmute(year,geo,country_of_production,sector,coicop,five_sectors,
            QUINTILE1,
            QUINTILE2,
            QUINTILE3,
            QUINTILE4,
            QUINTILE5,
            fd_total = QUINTILE1+QUINTILE2+QUINTILE3+QUINTILE4+QUINTILE5,
            TIV_CO2 = TIV_CO2_combustion + 
              TIV_CO2_noncombustion_cement + 
              TIV_CO2_noncombustion_lime +
              TIV_CO2_agriculture_peatdecay +
              TIV_CO2_waste_biogenic + 
              TIV_CO2_waste_fossil,
            q1_co2 = QUINTILE1*TIV_CO2,
            q2_co2 = QUINTILE2*TIV_CO2,
            q3_co2 = QUINTILE3*TIV_CO2,
            q4_co2 = QUINTILE4*TIV_CO2,
            q5_co2 = QUINTILE5*TIV_CO2,
            co2_total = q1_co2+q2_co2+q3_co2+q4_co2+q5_co2,
            TIV_CO2_domestic = TIV_CO2_combustion_domestic +
              TIV_CO2_noncombustion_cement_domestic +
              TIV_CO2_noncombustion_lime_domestic +
              TIV_CO2_agriculture_peatdecay_domestic +
              TIV_CO2_waste_biogenic_domestic +
              TIV_CO2_waste_fossil_domestic,
            q1_co2_domestic = QUINTILE1*TIV_CO2_domestic,
            q2_co2_domestic = QUINTILE2*TIV_CO2_domestic,
            q3_co2_domestic = QUINTILE3*TIV_CO2_domestic,
            q4_co2_domestic = QUINTILE4*TIV_CO2_domestic,
            q5_co2_domestic = QUINTILE5*TIV_CO2_domestic,
            co2_total_domestic = q1_co2_domestic+q2_co2_domestic+q3_co2_domestic+q4_co2_domestic+q5_co2_domestic,
            TIV_CO2_europe = TIV_CO2_combustion_europe +
              TIV_CO2_noncombustion_cement_europe +
              TIV_CO2_noncombustion_lime_europe +
              TIV_CO2_agriculture_peatdecay_europe +
              TIV_CO2_waste_biogenic_europe +
              TIV_CO2_waste_fossil_europe,
            q1_co2_europe = QUINTILE1*(TIV_CO2_europe - TIV_CO2_domestic),
            q2_co2_europe = QUINTILE2*(TIV_CO2_europe - TIV_CO2_domestic),
            q3_co2_europe = QUINTILE3*(TIV_CO2_europe - TIV_CO2_domestic),
            q4_co2_europe = QUINTILE4*(TIV_CO2_europe - TIV_CO2_domestic),
            q5_co2_europe = QUINTILE5*(TIV_CO2_europe - TIV_CO2_domestic),
            co2_total_europe = q1_co2_europe+q2_co2_europe+q3_co2_europe+q4_co2_europe+q5_co2_europe,
            TIV_CO2eq = TIV_CO2 + 
              TIV_CH4_combustion + 
              TIV_CH4_noncombustion_gas +
              TIV_CH4_noncombustion_oil +
              TIV_CH4_noncombustion_anthracite +
              TIV_CH4_noncombustion_bituminouscoal +
              TIV_CH4_noncombustion_cokingcoal +
              TIV_CH4_noncombustion_lignite +
              TIV_CH4_noncombustion_subbituminouscoal +
              TIV_CH4_noncombustion_oilrefinery +
              TIV_CH4_agriculture +
              TIV_CH4_waste +
              TIV_N2O_combustion + 
              TIV_N2O_agriculture +
              TIV_SF6 + TIV_HFC + TIV_PFC,
            q1_co2eq = QUINTILE1*TIV_CO2eq,
            q2_co2eq = QUINTILE2*TIV_CO2eq,
            q3_co2eq = QUINTILE3*TIV_CO2eq,
            q4_co2eq = QUINTILE4*TIV_CO2eq,
            q5_co2eq = QUINTILE5*TIV_CO2eq,
            co2eq_total = q1_co2eq + q2_co2eq + q3_co2eq + q4_co2eq + q5_co2eq,
            TIV_CO2eq_domestic = TIV_CO2_domestic + 
              TIV_CH4_combustion_domestic + 
              TIV_CH4_noncombustion_gas_domestic +
              TIV_CH4_noncombustion_oil_domestic +
              TIV_CH4_noncombustion_anthracite_domestic +
              TIV_CH4_noncombustion_bituminouscoal_domestic +
              TIV_CH4_noncombustion_cokingcoal_domestic +
              TIV_CH4_noncombustion_lignite_domestic +
              TIV_CH4_noncombustion_subbituminouscoal_domestic +
              TIV_CH4_noncombustion_oilrefinery_domestic +
              TIV_CH4_agriculture_domestic +
              TIV_CH4_waste_domestic +
              TIV_N2O_combustion_domestic + 
              TIV_N2O_agriculture_domestic +
              TIV_SF6_domestic + TIV_HFC_domestic + TIV_PFC_domestic,
            q1_co2eq_domestic = QUINTILE1*TIV_CO2eq_domestic,
            q2_co2eq_domestic = QUINTILE2*TIV_CO2eq_domestic,
            q3_co2eq_domestic = QUINTILE3*TIV_CO2eq_domestic,
            q4_co2eq_domestic = QUINTILE4*TIV_CO2eq_domestic,
            q5_co2eq_domestic = QUINTILE5*TIV_CO2eq_domestic,
            co2eq_total_domestic = q1_co2eq_domestic + q2_co2eq_domestic + q3_co2eq_domestic + q4_co2eq_domestic + q5_co2eq_domestic,
            TIV_CO2eq_europe = TIV_CO2_europe + 
              TIV_CH4_combustion_europe + 
              TIV_CH4_noncombustion_gas_europe +
              TIV_CH4_noncombustion_oil_europe +
              TIV_CH4_noncombustion_anthracite_europe +
              TIV_CH4_noncombustion_bituminouscoal_europe +
              TIV_CH4_noncombustion_cokingcoal_europe +
              TIV_CH4_noncombustion_lignite_europe +
              TIV_CH4_noncombustion_subbituminouscoal_europe +
              TIV_CH4_noncombustion_oilrefinery_europe +
              TIV_CH4_agriculture_europe +
              TIV_CH4_waste_europe +
              TIV_N2O_combustion_europe + 
              TIV_N2O_agriculture_europe +
              TIV_SF6_europe + TIV_HFC_europe + TIV_PFC_europe,
            q1_co2eq_europe = QUINTILE1*(TIV_CO2eq_europe - TIV_CO2eq_domestic),
            q2_co2eq_europe = QUINTILE2*(TIV_CO2eq_europe - TIV_CO2eq_domestic),
            q3_co2eq_europe = QUINTILE3*(TIV_CO2eq_europe - TIV_CO2eq_domestic),
            q4_co2eq_europe = QUINTILE4*(TIV_CO2eq_europe - TIV_CO2eq_domestic),
            q5_co2eq_europe = QUINTILE5*(TIV_CO2eq_europe - TIV_CO2eq_domestic),
            co2eq_total_europe = q1_co2eq_europe + q2_co2eq_europe + q3_co2eq_europe + q4_co2eq_europe + q5_co2eq_europe,
            TIV_energy,
            q1_energy = QUINTILE1*TIV_energy,
            q2_energy = QUINTILE2*TIV_energy,
            q3_energy = QUINTILE3*TIV_energy,
            q4_energy = QUINTILE4*TIV_energy,
            q5_energy = QUINTILE5*TIV_energy,
            energy_total = q1_energy+q2_energy+q3_energy+q4_energy+q5_energy,
            TIV_energy_domestic,
            q1_energy_domestic = QUINTILE1*TIV_energy_domestic,
            q2_energy_domestic = QUINTILE2*TIV_energy_domestic,
            q3_energy_domestic = QUINTILE3*TIV_energy_domestic,
            q4_energy_domestic = QUINTILE4*TIV_energy_domestic,
            q5_energy_domestic = QUINTILE5*TIV_energy_domestic,
            energy_total_domestic = q1_energy_domestic+q2_energy_domestic+q3_energy_domestic+q4_energy_domestic+q5_energy_domestic,
            TIV_energy_europe,
            q1_energy_europe = QUINTILE1*(TIV_energy_europe - TIV_energy_domestic),
            q2_energy_europe = QUINTILE2*(TIV_energy_europe - TIV_energy_domestic),
            q3_energy_europe = QUINTILE3*(TIV_energy_europe - TIV_energy_domestic),
            q4_energy_europe = QUINTILE4*(TIV_energy_europe - TIV_energy_domestic),
            q5_energy_europe = QUINTILE5*(TIV_energy_europe - TIV_energy_domestic),
            energy_total_europe = q1_energy_europe+q2_energy_europe+q3_energy_europe+q4_energy_europe+q5_energy_europe)

# bind intermediate results dataframe with direct from hh fd extensions dataframe
results_with_direct_FD_fp = bind_rows(results,direct_FD_fp_wide)

# create compressed results rds file
## clean names of results file
dat_all = results_with_direct_FD_fp %>%
  clean_names()

# convert sector labels to IDs
sectors = dat_all %>%
  distinct(sector) %>%
  mutate(sector_id = row_number())

## write EXIOBASE production sector ids to derived data folder (as .csv file) for use in creating figures in the main paper (commented out atm - not used by current main paper figures)
#write_csv(sectors, paste0(here("/analysis/data/derived/si/sectors_method1_pxp.csv")))

# convert aggregated sector labels to IDs
sectors_agg = dat_all %>%
  distinct(five_sectors) %>%
  mutate(sector_agg_id = row_number())

## write aggregated sector ids to derived data folder (as .csv file) for use in creating figures in the main paper. If interested in looking at a sectoral breakdown of the product-by-product version results, un-comment line below
#write_csv(sectors_agg, paste0(here("analysis/data/derived/si/sectors_agg_method1_pxp.csv")))

# convert COICOP labels to IDs
coicop = dat_all %>%
  distinct(coicop) %>%
  mutate(coicop_id = row_number()) 

## write COICOP consumption category ids to derived data folder (as .csv file) for use in creating figures in the main paper (commented out atm - not used by current main paper figures)
#write_csv(coicop, paste0(here("analysis/data/derived/si/coicop_method1_pxp.csv")))

# replace sector text labels with numerical IDs (save space)
dat_compressed = dat_all %>%
  left_join(sectors, by="sector") %>%
  left_join(sectors_agg, by="five_sectors") %>%
  left_join(coicop, by = "coicop") %>%
  select(-c(sector, five_sectors,coicop))

# extract sector aggregation
sector_mapping = dat_compressed %>%
  group_by(sector_id) %>%
  summarise(sector_agg_id = first(sector_agg_id),
            coicop_id = first(coicop_id))

# collapse country of origin
dat_results = dat_compressed %>%
  select(-sector_agg_id,-coicop_id) %>%
  group_by(year, geo, sector_id) %>%
  summarise_if(is.numeric, sum, na.rm = TRUE)

# extract final demand and pivot long
cols_final_demand = c("quintile1", "quintile2", "quintile3", "quintile4", "quintile5")
tmp_fd = dat_results %>%
  select(year, geo, sector_id, cols_final_demand) %>%
  pivot_longer(cols = cols_final_demand,
               names_to = "quintile",
               values_to = "fd_me") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract co2 and pivot long
cols_co2 = c("q1_co2", "q2_co2", "q3_co2", "q4_co2", "q5_co2")
tmp_co2 = dat_results %>%
  select(year, geo, sector_id, cols_co2) %>%
  pivot_longer(cols = cols_co2,
               names_to = "quintile",
               values_to = "co2_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract co2 domestic and pivot long
cols_co2_domestic = c("q1_co2_domestic", "q2_co2_domestic", "q3_co2_domestic", "q4_co2_domestic", "q5_co2_domestic")
tmp_co2_domestic = dat_results %>%
  select(year, geo, sector_id, cols_co2_domestic) %>%
  pivot_longer(cols = cols_co2_domestic,
               names_to = "quintile",
               values_to = "co2_domestic_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract co2 europe and pivot long
cols_co2_europe = c("q1_co2_europe", "q2_co2_europe", "q3_co2_europe", "q4_co2_europe", "q5_co2_europe")
tmp_co2_europe = dat_results %>%
  select(year, geo, sector_id, cols_co2_europe) %>%
  pivot_longer(cols = cols_co2_europe,
               names_to = "quintile",
               values_to = "co2_europe_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract co2eq and pivot long
cols_co2eq = c("q1_co2eq", "q2_co2eq", "q3_co2eq", "q4_co2eq", "q5_co2eq")
tmp_co2eq = dat_results %>%
  select(year, geo, sector_id, cols_co2eq) %>%
  pivot_longer(cols = cols_co2eq,
               names_to = "quintile",
               values_to = "co2eq_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract co2eq domestic and pivot long
cols_co2eq_domestic = c("q1_co2eq_domestic", "q2_co2eq_domestic", "q3_co2eq_domestic", "q4_co2eq_domestic", "q5_co2eq_domestic")
tmp_co2eq_domestic = dat_results %>%
  select(year, geo, sector_id, cols_co2eq_domestic) %>%
  pivot_longer(cols = cols_co2eq_domestic,
               names_to = "quintile",
               values_to = "co2eq_domestic_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract co2eq europe and pivot long
cols_co2eq_europe = c("q1_co2eq_europe", "q2_co2eq_europe", "q3_co2eq_europe", "q4_co2eq_europe", "q5_co2eq_europe")
tmp_co2eq_europe = dat_results %>%
  select(year, geo, sector_id, cols_co2eq_europe) %>%
  pivot_longer(cols = cols_co2eq_europe,
               names_to = "quintile",
               values_to = "co2eq_europe_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract energy use and pivot long
cols_energy = c("q1_energy","q2_energy","q3_energy","q4_energy","q5_energy")
tmp_energy = dat_results %>%
  select(year, geo, sector_id, cols_energy) %>%
  pivot_longer(cols = cols_energy,
               names_to = "quintile",
               values_to = "energy_use_TJ") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract energy domestic and pivot long
cols_energy_domestic = c("q1_energy_domestic","q2_energy_domestic","q3_energy_domestic","q4_energy_domestic","q5_energy_domestic")
tmp_energy_domestic = dat_results %>%
  select(year, geo, sector_id, cols_energy_domestic) %>%
  pivot_longer(cols = cols_energy_domestic,
               names_to = "quintile",
               values_to = "energy_use_domestic_TJ") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# extract energy europe and pivot long
cols_energy_europe = c("q1_energy_europe","q2_energy_europe","q3_energy_europe","q4_energy_europe","q5_energy_europe")
tmp_energy_europe = dat_results %>%
  select(year, geo, sector_id, cols_energy_europe) %>%
  pivot_longer(cols = cols_energy_europe,
               names_to = "quintile",
               values_to = "energy_use_europe_TJ") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

# recombine pivoted extensions
results_recombined = tmp_fd %>%
  left_join(tmp_co2, by=c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_co2_domestic, by=c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_co2_europe, by = c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_co2eq, by=c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_co2eq_domestic, by=c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_co2eq_europe, by = c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_energy, by=c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_energy_domestic, by=c("year", "geo", "sector_id", "quint")) %>%
  left_join(tmp_energy_europe, by = c("year", "geo", "sector_id", "quint"))

# finally re-join aggregated sector IDs
results_formatted = results_recombined %>% 
  left_join(sector_mapping, by="sector_id") %>%
  ungroup() %>%
  select(-coicop_id)

# write formatted results files (.csv and .rds) to 'data_dir_income_stratified_footprints'
write.csv(results_formatted, paste0(data_dir_income_stratified_footprints, "/results_formatted_method1_pxp.csv"))
write_rds(results_formatted, paste0(data_dir_income_stratified_footprints, "/results_formatted_method1_pxp.rds"))


################################################### !!!! method 2 !!!! - IXI version #############################
###############################################################################################################################################################
###############################################################################################################################################################


# 'results' data frame the second way

# aggregate - playing around trying to go the other way

# load 'mean expenditure by quintile' data
hbs_exp_t133 = read_csv(paste0(data_dir_income_stratified_footprints, "/hbs_exp_t133.csv"))
# rename and arrange by country
mean_expenditure_by_quintile = hbs_exp_t133 %>% 
  rename(geo = 3, quintile = "quantile") %>%
  arrange(geo)

# load 'mean expenditure by quintile and coicop' data
hbs_str_t223 = read_csv(paste0(data_dir_income_stratified_footprints, "/hbs_str_t223.csv"))
# rename and arrange by country
mean_expenditure_by_coicop_sector = hbs_str_t223 %>% 
  rename(geo = 4, quintile = "quantile") %>%
  arrange(geo) 

# create long data sets for both

mean_expenditure_by_quintile_long = mean_expenditure_by_quintile %>%
  filter(unit == "PPS_HH") %>%
  filter(!(quintile %in% c("UNK","TOTAL"))) %>%
  select(-unit) %>%
  gather(year,euro_pps,-quintile,-geo) 

mean_expenditure_by_coicop_sector_long = mean_expenditure_by_coicop_sector %>% 
  filter(!(quintile %in% c("UNK","TOTAL"))) %>%
  select(-unit) %>%
  gather(year,pm,-quintile,-coicop,-geo) %>%
  mutate(coicop = dplyr::recode(coicop, "CP041" = "rent",        
                                "CP042" = "rent")) %>%           
  group_by(geo,quintile,coicop,year) %>%                               
  mutate(pm = parse_number(pm),
         pm = as.numeric(pm)) %>%
  summarise(pm = sum(pm, na.rm = TRUE)) %>%
  ungroup() %>%
  mutate(pm = ifelse(geo == "DE" & year == 2005 & quintile == "QUINTILE1" & 
                       coicop == "CP072", 92-21-14,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2005 & quintile == "QUINTILE2" & 
                       coicop == "CP072", 108-22-12,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2005 & quintile == "QUINTILE3" & 
                       coicop == "CP072", 124-32-11,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2005 & quintile == "QUINTILE4" & 
                       coicop == "CP072", 133-43-10,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2005 & quintile == "QUINTILE5" & 
                       coicop == "CP072", 162-81-11,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2010 & quintile == "QUINTILE1" & 
                       coicop == "CP044", 412-4-78-322,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2010 & quintile == "QUINTILE2" & 
                       coicop == "CP044", 355-5-68-265,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2010 & quintile == "QUINTILE3" & 
                       coicop == "CP044", 325-8-64-229,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2010 & quintile == "QUINTILE4" & 
                       coicop == "CP044", 300-9-58-204,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2010 & quintile == "QUINTILE5" & 
                       coicop == "CP044", 249-10-46-167,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2015 & quintile == "QUINTILE1" & 
                       coicop == "CP044", 433-3-82-340,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2015 & quintile == "QUINTILE2" & 
                       coicop == "CP044", 376-6-70-284,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2015 & quintile == "QUINTILE3" & 
                       coicop == "CP044", 351-9-67-251,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2015 & quintile == "QUINTILE4" & 
                       coicop == "CP044", 326-10-61-228,pm)) %>%
  mutate(pm = ifelse(geo == "DE" & year == 2015 & quintile == "QUINTILE5" & 
                       coicop == "CP044", 280-9-49-195,pm))

join_expenditures = mean_expenditure_by_coicop_sector_long %>% 
  left_join(mean_expenditure_by_quintile_long, by = c("geo","quintile","year")) %>%
  mutate(euro_pps = as.numeric(euro_pps),
         pm = as.numeric(pm),
         euro_pps_coicop = pm*(euro_pps/1000))


# load margin tables

trade_and_transport = read.csv(paste0(data_dir_income_stratified_footprints, "/SNA_TABLE45_20042020103737298.csv")) %>%
  select(LOCATION, PRODUCT, Product, Year, Value) %>% 
  mutate(geo = dplyr::recode(LOCATION,"AUT" = "AT", 
                             "BEL" = "BE",
                             "CYP" = "CY",
                             "CZE" = "CZ",
                             "DNK" = "DK",
                             "EST" = "EE",
                             "FIN" = "FI",
                             "FRA" = "FR",
                             "DEU" = "DE",
                             "GRC" = "EL",
                             "HUN" = "HU",
                             "IRL" = "IE",
                             "ITA" = "IT",
                             "LVA" = "LV",
                             "LTU" = "LT",
                             "LUX" = "LU",
                             "MLT" = "MT",
                             "MNE" = "ME",
                             "NLD" = "NL",
                             "NOR" = "NO",
                             "POL" = "PL",
                             "PRT" = "PT",
                             "ROU" = "RO",
                             "SRB" = "RS",
                             "SVK" = "SK",
                             "SVN" = "SI",
                             "ESP" = "ES",
                             "SWE" = "SE",
                             "CHE" = "CH",
                             "MKD" = "MK",
                             "TUR" = "TR",
                             "GBR" = "UK",
                             "BGR" = "BG",
                             "HRV" = "HR")) %>%
  select(geo, Year, PRODUCT, Value) %>%
  rename(year = Year,
         trade_and_transport = Value) %>%
  mutate(trade_and_transport = trade_and_transport/100) %>%
  rename(geo_join = geo)



taxes_less_subsidies = read.csv(paste0(data_dir_income_stratified_footprints, "/SNA_TABLE45_20042020104120395.csv")) %>%
  select(LOCATION, PRODUCT, Product, Year, Value) %>%
  mutate(geo = dplyr::recode(LOCATION,"AUT" = "AT", 
                             "BEL" = "BE",
                             "CYP" = "CY",
                             "CZE" = "CZ",
                             "DNK" = "DK",
                             "EST" = "EE",
                             "FIN" = "FI",
                             "FRA" = "FR",
                             "DEU" = "DE",
                             "GRC" = "EL",
                             "HUN" = "HU",
                             "IRL" = "IE",
                             "ITA" = "IT",
                             "LVA" = "LV",
                             "LTU" = "LT",
                             "LUX" = "LU",
                             "MLT" = "MT",
                             "MNE" = "ME",
                             "NLD" = "NL",
                             "NOR" = "NO",
                             "POL" = "PL",
                             "PRT" = "PT",
                             "ROU" = "RO",
                             "SRB" = "RS",
                             "SVK" = "SK",
                             "SVN" = "SI",
                             "ESP" = "ES",
                             "SWE" = "SE",
                             "CHE" = "CH",
                             "MKD" = "MK",
                             "TUR" = "TR",
                             "GBR" = "UK",
                             "BGR" = "BG",
                             "HRV" = "HR")) %>%
  select(geo, Year, PRODUCT, Value) %>%
  rename(year = Year,
         taxes_less_subsidies = Value) %>%
  mutate(taxes_less_subsidies = taxes_less_subsidies/100) %>%
  rename(geo_join = geo)

# create margins dataframe

geo_real = rep(c("AT", 
                 "BE",
                 "CY",
                 "CZ",
                 "DK",
                 "EE",
                 "FI",
                 "FR",
                 "DE",
                 "EL",
                 "HU",
                 "IE",
                 "IT",
                 "LV",
                 "LT",
                 "LU",
                 "MT",
                 "ME",
                 "NL",
                 "NO",
                 "PL",
                 "PT",
                 "RO",
                 "RS",
                 "SK",
                 "SI",
                 "ES",
                 "SE",
                 "MK",
                 "TR",
                 "UK",
                 "BG",
                 "HR"),each = 16)

geo_join = rep(c("AT", 
                 "BE",
                 "CY",
                 "CZ",
                 "DK",
                 "LV",
                 "FI",
                 "FR",
                 "AT",
                 "EL",
                 "HU",
                 "UK",
                 "IT",
                 "LV",
                 "LV",
                 "LU",
                 "MT",
                 "ME",
                 "NL",
                 "FI",
                 "PL",
                 "PT",
                 "RO",
                 "RS",
                 "SK",
                 "SI",
                 "PT",
                 "FI",
                 "MK",
                 "BG",
                 "UK",
                 "BG",
                 "HR"),each = 16)

year = rep(2010,length(geo_real))

PRODUCT = c("P10_12",
            "P13_15",
            "P68A",
            "PF",
            "PE",
            "PD",
            "PC",
            "PQ",
            "P29",
            "P19",
            "P30",
            "P61",
            "PR",
            "PP",
            "PI",
            "PS")

margin_sectors = data.frame(geo_real,geo_join,year,PRODUCT)

# join everything - and impute

margins = margin_sectors %>%
  left_join(taxes_less_subsidies, by = c("geo_join","year","PRODUCT")) %>%
  left_join(trade_and_transport, by = c("geo_join","year","PRODUCT")) %>%
  select(-geo_join) %>%
  rename(geo = geo_real) %>%
  mutate(taxes_less_subsidies = ifelse(geo == "CZ" & PRODUCT == "P68A", 0, taxes_less_subsidies)) %>%
  mutate(trade_and_transport = ifelse(geo == "CZ" & PRODUCT == "P68A", 0, trade_and_transport)) %>%
  mutate(taxes_less_subsidies = ifelse(geo == "SK" & PRODUCT == "P68A", 0, taxes_less_subsidies)) %>%
  mutate(trade_and_transport = ifelse(geo == "SK" & PRODUCT == "P68A", 0, trade_and_transport)) %>%
  select(-year)


# join margin data to join_expenditures 

with_margins = join_expenditures %>%
  mutate(year = as.numeric(year),
         PRODUCT = dplyr::recode(coicop,
                                 "CP011" =  "P10_12",
                                 "CP012" =  "P10_12",
                                 "CP02" = "P10_12",
                                 "CP03" = "P13_15",
                                 "rent" = "P68A",
                                 "CP043" = "PF",
                                 "CP044" = "PE",
                                 "CP045" = "PD",
                                 "CP05" = "PC",
                                 "CP06" = "PQ",
                                 "CP071" = "P29",
                                 "CP072" = "P19",
                                 "CP073" = "P30",
                                 "CP08" = "P61",
                                 "CP09" = "PR",
                                 "CP10" = "PP",
                                 "CP11" = "PI",
                                 "CP12" = "PS")) %>%
  left_join(margins, by = c("geo","PRODUCT")) %>%
  mutate(euro_pps_coicop_bp = euro_pps_coicop*(1 - (trade_and_transport + taxes_less_subsidies))) 


# re-create expenditure 

mean_expenditure_by_quintile_long_bp = with_margins %>%
  group_by(quintile,geo,year) %>%
  summarise(euro_pps_bp = sum(euro_pps_coicop_bp, na.rm = TRUE))


mean_expenditure_by_coicop_sector_long_bp = with_margins %>%
  left_join(mean_expenditure_by_quintile_long_bp, by = c("quintile","geo","year")) %>%
  mutate(pm_bp = (euro_pps_coicop_bp/euro_pps_bp)*1000) %>%
  select(quintile,coicop,geo,year,pm_bp)


###

shares = join_expenditures %>%
  group_by(coicop,geo,year) %>%
  mutate(share = euro_pps_coicop/sum(euro_pps_coicop))


################################################### !!!! method 2 - IXI version - PPS HH NO RENT !!!! ####################################################
##########################################################################################################################################################
##########################################################################################################################################################

# Exiobase - ixi version

years_exb_ixi = c(2005,2010,2015)


Eurostat_countries_hh_fd = NULL

total_fd = NULL

TIVs = NULL

domestic_TIVs = NULL

europe_TIVs = NULL

national_fp = NULL

for (i in years_exb_ixi){
  year_current = i
  
  Exiobase_FD =  read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/FD_",year_current,"_ixi.csv"))[,-1]
  
  # select household final demand vectors for relevant countries - figure out how to soft code this
  
  
  AT = Exiobase_FD[,1]
  BE = Exiobase_FD[,8]
  BG = Exiobase_FD[,15]
  CY = Exiobase_FD[,22]
  CZ = Exiobase_FD[,29]
  DE = Exiobase_FD[,36]
  DK = Exiobase_FD[,43]
  EE = Exiobase_FD[,50]
  EL = Exiobase_FD[,78]
  ES = Exiobase_FD[,57]
  FI = Exiobase_FD[,64]
  FR = Exiobase_FD[,71]
  HR = Exiobase_FD[,85]
  HU = Exiobase_FD[,92]
  IE = Exiobase_FD[,99]
  IT = Exiobase_FD[,106]
  LT = Exiobase_FD[,113]
  LU = Exiobase_FD[,120]
  LV = Exiobase_FD[,127]
  MT = Exiobase_FD[,134]
  NL = Exiobase_FD[,141]
  NO = Exiobase_FD[,288]
  PL = Exiobase_FD[,148]
  PT = Exiobase_FD[,155]
  RO = Exiobase_FD[,162]
  SE = Exiobase_FD[,169]
  SI = Exiobase_FD[,176]
  SK = Exiobase_FD[,183]
  TR = Exiobase_FD[,274]
  UK = Exiobase_FD[,190]
  
  Eurostat_countries = cbind(AT,BE,BG,CY,CZ,DE,DK,EE,EL,ES,FI,FR,HR,HU,IE,IT,LT,LU,LV,MT,NL,NO,PL,PT,RO,SE,SI,SK,TR,UK)
  
  year = as.character(rep(year_current,nrow(Eurostat_countries)))
  look_Eurostat_countries = cbind(year,Eurostat_countries) 
  
  Eurostat_countries_hh_fd = rbind(Eurostat_countries_hh_fd,look_Eurostat_countries)
  
  
  eurostat_countries_colsums = colSums(Eurostat_countries)
  
  geo = data.frame(c("AT","BE","BG","CY","CZ","DE","DK","EE","EL","ES","FI",
                     "FR","HR","HU","IE","IT","LT","LU","LV","MT","NL","NO",
                     "PL","PT","RO","SE","SI","SK","TR","UK")) %>% rename_at(1,~"geo")
  
  year = rep(year_current, 30)
  
  fds = cbind(geo,year,eurostat_countries_colsums) %>% slice(rep(1:n(), each = 5))
  
  quintiles = data.frame(rep(c("QUINTILE1","QUINTILE2","QUINTILE3","QUINTILE4","QUINTILE5"),30)) %>% rename_at(1,~"quintile")
  
  total_fd_year_current = cbind(fds,quintiles)
  
  total_fd = rbind(total_fd, total_fd_year_current)
  
  # labels
  
  Exiobase_T_labels = read.csv(paste0(data_dir_income_stratified_footprints, "/Exiobase_T_labels_ixi_w_coicop_mapping.csv")) %>%
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK")) 
  
  # TIVs
  
  # CO2 - combustion - air
  
  Exiobase_TIV_co2_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_combustion_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_co2_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_combustion_air_", year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_combustion_domestic)
  
  Exiobase_TIV_europe_breakdown_co2_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_combustion_air_", year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_combustion_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_combustion_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_combustion_europe,TIV_CO2_combustion_not_europe)
  
  # CO2 - noncombustion - cement - air
  
  Exiobase_TIV_co2_noncombustion_cement_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_noncombustion_cement_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_co2_noncombustion_cement_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_noncombustion_cement_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_noncombustion_cement_domestic)
  
  Exiobase_TIV_europe_breakdown_co2_noncombustion_cement_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_noncombustion_cement_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_noncombustion_cement_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_noncombustion_cement_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_noncombustion_cement_europe,TIV_CO2_noncombustion_cement_not_europe)
  
  # CO2 - noncombustion - lime - air
  
  Exiobase_TIV_co2_noncombustion_lime_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_noncombustion_lime_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_co2_noncombustion_lime_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_noncombustion_lime_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_noncombustion_lime_domestic)
  
  Exiobase_TIV_europe_breakdown_co2_noncombustion_lime_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_noncombustion_lime_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_noncombustion_lime_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_noncombustion_lime_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_noncombustion_lime_europe,TIV_CO2_noncombustion_lime_not_europe)
  
  # CO2 - agriculture - peat decay - air
  
  Exiobase_TIV_co2_agriculture_peatdecay_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_agriculture_peatdecay_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_co2_agriculture_peatdecay_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_agriculture_peatdecay_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_agriculture_peatdecay_domestic)
  
  Exiobase_TIV_europe_breakdown_co2_agriculture_peatdecay_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_agriculture_peatdecay_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_agriculture_peatdecay_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_agriculture_peatdecay_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_agriculture_peatdecay_europe,TIV_CO2_agriculture_peatdecay_not_europe)
  
  # CO2 - waste - biogenic - air
  
  Exiobase_TIV_co2_waste_biogenic_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_biogenic_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_co2_waste_biogenic_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_biogenic_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_waste_biogenic_domestic)
  
  Exiobase_TIV_europe_breakdown_co2_waste_biogenic_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_biogenic_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_waste_biogenic_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_waste_biogenic_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_waste_biogenic_europe,TIV_CO2_waste_biogenic_not_europe)
  
  # CO2 - waste - fossil - air
  
  Exiobase_TIV_co2_waste_fossil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_co2_waste_fossil_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_co2_waste_fossil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_waste_fossil_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CO2_waste_fossil_domestic)
  
  Exiobase_TIV_europe_breakdown_co2_waste_fossil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_co2_waste_fossil_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CO2_waste_fossil_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CO2_waste_fossil_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CO2_waste_fossil_europe,TIV_CO2_waste_fossil_not_europe)
  

  # CH4 - combustion -air
  
  Exiobase_TIV_ch4_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_combustion_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_ch4_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_combustion_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_combustion_domestic)
  
  Exiobase_TIV_europe_breakdown_ch4_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_combustion_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_combustion_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_combustion_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_combustion_europe,TIV_CH4_combustion_not_europe)
  
  # CH4 - noncombustion - gas - air
  
  Exiobase_TIV_ch4_noncombustion_gas_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_gas_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_ch4_noncombustion_gas_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_gas_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_gas_domestic)
  
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_gas_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_gas_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_gas_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_gas_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_gas_europe,TIV_CH4_noncombustion_gas_not_europe)
  
  # CH4 - noncombustion - oil - air
  
  Exiobase_TIV_ch4_noncombustion_oil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_oil_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_ch4_noncombustion_oil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_oil_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_oil_domestic)
  
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_oil_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_oil_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_oil_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_oil_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_oil_europe,TIV_CH4_noncombustion_oil_not_europe)
  
  # CH4 - noncombustion - anthracite - air
  
  Exiobase_TIV_ch4_noncombustion_anthracite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_anthracite_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_ch4_noncombustion_anthracite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_anthracite_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_anthracite_domestic)
  
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_anthracite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_anthracite_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_anthracite_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_anthracite_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_anthracite_europe,TIV_CH4_noncombustion_anthracite_not_europe)
  
  # CH4 - noncombustion - bituminouscoal - air
  
  Exiobase_TIV_ch4_noncombustion_bituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_bituminouscoal_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_ch4_noncombustion_bituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_bituminouscoal_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_bituminouscoal_domestic)
  
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_bituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_bituminouscoal_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_bituminouscoal_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_bituminouscoal_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_bituminouscoal_europe,TIV_CH4_noncombustion_bituminouscoal_not_europe)
  
  # CH4 - noncombustion - cokingcoal - air
  
  Exiobase_TIV_ch4_noncombustion_cokingcoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_cokingcoal_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_ch4_noncombustion_cokingcoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_cokingcoal_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_cokingcoal_domestic)
  
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_cokingcoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_cokingcoal_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_cokingcoal_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_cokingcoal_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_cokingcoal_europe,TIV_CH4_noncombustion_cokingcoal_not_europe)
  
  # CH4 - noncombustion - lignite - air
  
  Exiobase_TIV_ch4_noncombustion_lignite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_lignite_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_ch4_noncombustion_lignite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_lignite_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_lignite_domestic)
  
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_lignite_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_lignite_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_lignite_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_lignite_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_lignite_europe,TIV_CH4_noncombustion_lignite_not_europe)
  
  # CH4 - noncombustion - subbituminouscoal - air
  
  Exiobase_TIV_ch4_noncombustion_subbituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_subbituminouscoal_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_ch4_noncombustion_subbituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_subbituminouscoal_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_subbituminouscoal_domestic)
  
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_subbituminouscoal_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_subbituminouscoal_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_subbituminouscoal_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_subbituminouscoal_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_subbituminouscoal_europe,TIV_CH4_noncombustion_subbituminouscoal_not_europe)
  
  # CH4 - noncombustion - oilrefinery - air
  
  Exiobase_TIV_ch4_noncombustion_oilrefinery_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_noncombustion_oilrefinery_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_ch4_noncombustion_oilrefinery_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_oilrefinery_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_noncombustion_oilrefinery_domestic)
  
  Exiobase_TIV_europe_breakdown_ch4_noncombustion_oilrefinery_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_noncombustion_oilrefinery_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_noncombustion_oilrefinery_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_noncombustion_oilrefinery_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_noncombustion_oilrefinery_europe,TIV_CH4_noncombustion_oilrefinery_not_europe)
  
  # CH4 - agriculture - air
  
  Exiobase_TIV_ch4_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_agriculture_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_ch4_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_agriculture_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_agriculture_domestic)
  
  Exiobase_TIV_europe_breakdown_ch4_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_agriculture_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_agriculture_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_agriculture_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_agriculture_europe,TIV_CH4_agriculture_not_europe)
  
  # CH4 - waste - air
  
  Exiobase_TIV_ch4_waste_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_ch4_CO2eq_waste_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_ch4_waste_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_waste_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_CH4_waste_domestic)
  
  Exiobase_TIV_europe_breakdown_ch4_waste_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_ch4_CO2eq_waste_air_", year_current, "_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_CH4_waste_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_CH4_waste_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_CH4_waste_europe,TIV_CH4_waste_not_europe)
  
  
  # N2O - combustion - air
  
  Exiobase_TIV_n2o_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_n2o_CO2eq_combustion_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_n2o_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_n2o_CO2eq_combustion_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_N2O_combustion_domestic)
  
  Exiobase_TIV_europe_breakdown_n2o_combustion_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_n2o_CO2eq_combustion_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_N2O_combustion_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_N2O_combustion_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_N2O_combustion_europe,TIV_N2O_combustion_not_europe)
  
  # N2O - agriculture - air
  
  Exiobase_TIV_n2o_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_n2o_CO2eq_agriculture_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_n2o_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_n2o_CO2eq_agriculture_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_N2O_agriculture_domestic)
  
  Exiobase_TIV_europe_breakdown_n2o_agriculture_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_n2o_CO2eq_agriculture_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_N2O_agriculture_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_N2O_agriculture_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_N2O_agriculture_europe,TIV_N2O_agriculture_not_europe)
  
  # SF6 - air
  
  Exiobase_TIV_sf6_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_sf6_CO2eq_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_sf6_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_sf6_CO2eq_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_SF6_domestic)
  
  Exiobase_TIV_europe_breakdown_sf6_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_sf6_CO2eq_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_SF6_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_SF6_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_SF6_europe,TIV_SF6_not_europe)
  
  # HFC - air
  
  Exiobase_TIV_hfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_hfc_CO2eq_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_hfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_hfc_CO2eq_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_HFC_domestic)
  
  Exiobase_TIV_europe_breakdown_hfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_hfc_CO2eq_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_HFC_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_HFC_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_HFC_europe,TIV_HFC_not_europe)
  
  # PFC - air
  
  Exiobase_TIV_pfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_pfc_CO2eq_air_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_pfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_pfc_CO2eq_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_PFC_domestic)
  
  Exiobase_TIV_europe_breakdown_pfc_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_pfc_CO2eq_air_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_PFC_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_PFC_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_PFC_europe,TIV_PFC_not_europe)
  
  # Energy use
  
  Exiobase_TIV_energy_use_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_energy_carrier_use_",year_current,"_ixi.csv"))[,-1]
  
  Exiobase_TIV_country_breakdown_energy_use_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_energy_carrier_use_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    gather(country, TIV_energy_domestic)
  
  Exiobase_TIV_europe_breakdown_energy_use_bp = read.csv(paste0(data_dir_exiobase, "/IOT_",year_current,"_ixi/TIV_country_breakdown_energy_carrier_use_",year_current,"_ixi.csv"))[,-1] %>%
    row_to_names(row_number = 1) %>%
    mutate_at(vars(AT:ZA), funs(as.numeric(as.character(.)))) %>%
    mutate(TIV_energy_europe = AT +
             BE + BG + CY + CZ +
             DE + DK + EE + 
             ES + FI + FR + 
             GB + GR + HR +
             HU + IE + IT +
             LT + LU + LV +
             MT + NL + PL +
             PT + TR + SK + 
             SI + SE + RO +
             NO,
           TIV_energy_not_europe = AU +
             BR + CA + CH + CN +
             ID + IN + JP + KR +
             MX + RU + TW + US + 
             WA + WE + WF + WL + WM +
             ZA) %>%
    select(TIV_energy_europe,TIV_energy_not_europe)
  
  # join with labels
  
  TIV_with_labels = cbind(Exiobase_T_labels,
                          t(Exiobase_TIV_co2_combustion_bp),
                          t(Exiobase_TIV_co2_noncombustion_cement_bp),
                          t(Exiobase_TIV_co2_noncombustion_lime_bp),
                          t(Exiobase_TIV_co2_agriculture_peatdecay_bp),
                          t(Exiobase_TIV_co2_waste_biogenic_bp),
                          t(Exiobase_TIV_co2_waste_fossil_bp),
                          t(Exiobase_TIV_ch4_combustion_bp),
                          t(Exiobase_TIV_ch4_noncombustion_gas_bp),
                          t(Exiobase_TIV_ch4_noncombustion_oil_bp),
                          t(Exiobase_TIV_ch4_noncombustion_anthracite_bp),
                          t(Exiobase_TIV_ch4_noncombustion_bituminouscoal_bp),
                          t(Exiobase_TIV_ch4_noncombustion_cokingcoal_bp),
                          t(Exiobase_TIV_ch4_noncombustion_lignite_bp),
                          t(Exiobase_TIV_ch4_noncombustion_subbituminouscoal_bp),
                          t(Exiobase_TIV_ch4_noncombustion_oilrefinery_bp),
                          t(Exiobase_TIV_ch4_agriculture_bp),
                          t(Exiobase_TIV_ch4_waste_bp),
                          t(Exiobase_TIV_n2o_combustion_bp),
                          t(Exiobase_TIV_n2o_agriculture_bp),
                          t(Exiobase_TIV_sf6_bp),
                          t(Exiobase_TIV_hfc_bp),
                          t(Exiobase_TIV_pfc_bp),
                          t(Exiobase_TIV_energy_use_bp)) %>% 
    rename(TIV_CO2_combustion = "t(Exiobase_TIV_co2_combustion_bp)",
           TIV_CO2_noncombustion_cement = "t(Exiobase_TIV_co2_noncombustion_cement_bp)",
           TIV_CO2_noncombustion_lime = "t(Exiobase_TIV_co2_noncombustion_lime_bp)",
           TIV_CO2_agriculture_peatdecay = "t(Exiobase_TIV_co2_agriculture_peatdecay_bp)",
           TIV_CO2_waste_biogenic = "t(Exiobase_TIV_co2_waste_biogenic_bp)",
           TIV_CO2_waste_fossil = "t(Exiobase_TIV_co2_waste_fossil_bp)",
           TIV_CH4_combustion = "t(Exiobase_TIV_ch4_combustion_bp)",
           TIV_CH4_noncombustion_gas = "t(Exiobase_TIV_ch4_noncombustion_gas_bp)",
           TIV_CH4_noncombustion_oil = "t(Exiobase_TIV_ch4_noncombustion_oil_bp)",
           TIV_CH4_noncombustion_anthracite = "t(Exiobase_TIV_ch4_noncombustion_anthracite_bp)",
           TIV_CH4_noncombustion_bituminouscoal = "t(Exiobase_TIV_ch4_noncombustion_bituminouscoal_bp)",
           TIV_CH4_noncombustion_cokingcoal = "t(Exiobase_TIV_ch4_noncombustion_cokingcoal_bp)",
           TIV_CH4_noncombustion_lignite = "t(Exiobase_TIV_ch4_noncombustion_lignite_bp)",
           TIV_CH4_noncombustion_subbituminouscoal = "t(Exiobase_TIV_ch4_noncombustion_subbituminouscoal_bp)",
           TIV_CH4_noncombustion_oilrefinery = "t(Exiobase_TIV_ch4_noncombustion_oilrefinery_bp)",
           TIV_CH4_agriculture = "t(Exiobase_TIV_ch4_agriculture_bp)",
           TIV_CH4_waste = "t(Exiobase_TIV_ch4_waste_bp)",
           TIV_N2O_combustion = "t(Exiobase_TIV_n2o_combustion_bp)",
           TIV_N2O_agriculture = "t(Exiobase_TIV_n2o_agriculture_bp)",
           TIV_SF6 = "t(Exiobase_TIV_sf6_bp)",
           TIV_HFC = "t(Exiobase_TIV_hfc_bp)",
           TIV_PFC = "t(Exiobase_TIV_pfc_bp)",
           TIV_energy = "t(Exiobase_TIV_energy_use_bp)") %>% 
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK"))  
  
  year = as.character(rep(year_current,nrow(TIV_with_labels)))
  
  look = cbind(year,TIV_with_labels) %>%
    rename(country_of_production = V1, sector = V2)
  
  TIVs = rbind(TIVs,look)
  
  # domestic TIVs
  
  domestic_TIV_with_labels = cbind(Exiobase_T_labels,
                                   Exiobase_TIV_country_breakdown_co2_combustion_bp,
                                   Exiobase_TIV_country_breakdown_co2_noncombustion_cement_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_co2_noncombustion_lime_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_co2_agriculture_peatdecay_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_co2_waste_biogenic_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_co2_waste_fossil_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_combustion_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_gas_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_oil_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_anthracite_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_bituminouscoal_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_cokingcoal_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_lignite_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_subbituminouscoal_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_noncombustion_oilrefinery_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_agriculture_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_ch4_waste_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_n2o_combustion_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_n2o_agriculture_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_sf6_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_hfc_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_pfc_bp %>% select(-country),
                                   Exiobase_TIV_country_breakdown_energy_use_bp %>% select(-country))  %>% 
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK"),
           country = dplyr::recode(country, "GR" = "EL", "GB" = "UK"))  
  
  year_domestic = as.character(rep(year_current,nrow(domestic_TIV_with_labels)))
  
  look_domestic = cbind(year_domestic,domestic_TIV_with_labels) %>% 
    rename(country_of_production = V1, sector = V2, geo = country, year = year_domestic) %>%
    mutate(TIV_CO2_combustion_domestic = as.numeric(TIV_CO2_combustion_domestic),
           TIV_CO2_noncombustion_cement_domestic = as.numeric(TIV_CO2_noncombustion_cement_domestic),
           TIV_CO2_noncombustion_lime_domestic = as.numeric(TIV_CO2_noncombustion_lime_domestic),
           TIV_CO2_agriculture_peatdecay_domestic = as.numeric(TIV_CO2_agriculture_peatdecay_domestic),
           TIV_CO2_waste_biogenic_domestic = as.numeric(TIV_CO2_waste_biogenic_domestic),
           TIV_CO2_waste_fossil_domestic = as.numeric(TIV_CO2_waste_fossil_domestic),
           TIV_CH4_combustion_domestic = as.numeric(TIV_CH4_combustion_domestic),
           TIV_CH4_noncombustion_gas_domestic = as.numeric(TIV_CH4_noncombustion_gas_domestic),
           TIV_CH4_noncombustion_oil_domestic = as.numeric(TIV_CH4_noncombustion_oil_domestic),
           TIV_CH4_noncombustion_anthracite_domestic = as.numeric(TIV_CH4_noncombustion_anthracite_domestic),
           TIV_CH4_noncombustion_bituminouscoal_domestic = as.numeric(TIV_CH4_noncombustion_bituminouscoal_domestic),
           TIV_CH4_noncombustion_cokingcoal_domestic = as.numeric(TIV_CH4_noncombustion_cokingcoal_domestic),
           TIV_CH4_noncombustion_lignite_domestic = as.numeric(TIV_CH4_noncombustion_lignite_domestic),
           TIV_CH4_noncombustion_subbituminouscoal_domestic = as.numeric(TIV_CH4_noncombustion_subbituminouscoal_domestic),
           TIV_CH4_noncombustion_oilrefinery_domestic = as.numeric(TIV_CH4_noncombustion_oilrefinery_domestic),
           TIV_CH4_agriculture_domestic = as.numeric(TIV_CH4_agriculture_domestic),
           TIV_CH4_waste_domestic = as.numeric(TIV_CH4_waste_domestic),
           TIV_N2O_combustion_domestic = as.numeric(TIV_N2O_combustion_domestic),
           TIV_N2O_agriculture_domestic = as.numeric(TIV_N2O_agriculture_domestic),
           TIV_SF6_domestic = as.numeric(TIV_SF6_domestic),
           TIV_HFC_domestic = as.numeric(TIV_HFC_domestic),
           TIV_PFC_domestic = as.numeric(TIV_PFC_domestic),
           TIV_energy_domestic = as.numeric(TIV_energy_domestic))
  
  domestic_TIVs = rbind(domestic_TIVs, look_domestic)
  
  # europe TIVs with labels 
  
  europe_TIV_with_labels = cbind(Exiobase_T_labels,
                                 Exiobase_TIV_europe_breakdown_co2_combustion_bp,
                                 Exiobase_TIV_europe_breakdown_co2_noncombustion_cement_bp,
                                 Exiobase_TIV_europe_breakdown_co2_noncombustion_lime_bp,
                                 Exiobase_TIV_europe_breakdown_co2_agriculture_peatdecay_bp,
                                 Exiobase_TIV_europe_breakdown_co2_waste_biogenic_bp,
                                 Exiobase_TIV_europe_breakdown_co2_waste_fossil_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_combustion_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_gas_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_oil_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_anthracite_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_bituminouscoal_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_cokingcoal_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_lignite_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_subbituminouscoal_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_noncombustion_oilrefinery_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_agriculture_bp,
                                 Exiobase_TIV_europe_breakdown_ch4_waste_bp,
                                 Exiobase_TIV_europe_breakdown_n2o_combustion_bp,
                                 Exiobase_TIV_europe_breakdown_n2o_agriculture_bp,
                                 Exiobase_TIV_europe_breakdown_sf6_bp,
                                 Exiobase_TIV_europe_breakdown_hfc_bp,
                                 Exiobase_TIV_europe_breakdown_pfc_bp,
                                 Exiobase_TIV_europe_breakdown_energy_use_bp) %>% 
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK")) 
  
  year_europe = as.character(rep(year_current,nrow(europe_TIV_with_labels)))
  
  look_europe = cbind(year_europe,europe_TIV_with_labels) %>% 
    rename(country_of_production = V1, sector = V2, year = year_europe) %>%
    mutate(TIV_CO2_combustion_europe = as.numeric(TIV_CO2_combustion_europe),
           TIV_CO2_noncombustion_cement_europe = as.numeric(TIV_CO2_noncombustion_cement_europe),
           TIV_CO2_noncombustion_lime_europe = as.numeric(TIV_CO2_noncombustion_lime_europe),
           TIV_CO2_agriculture_peatdecay_europe = as.numeric(TIV_CO2_agriculture_peatdecay_europe),
           TIV_CO2_waste_biogenic_europe = as.numeric(TIV_CO2_waste_biogenic_europe),
           TIV_CO2_waste_fossil_europe = as.numeric(TIV_CO2_waste_fossil_europe),
           TIV_CH4_combustion_europe = as.numeric(TIV_CH4_combustion_europe),
           TIV_CH4_noncombustion_gas_europe = as.numeric(TIV_CH4_noncombustion_gas_europe),
           TIV_CH4_noncombustion_oil_europe = as.numeric(TIV_CH4_noncombustion_oil_europe),
           TIV_CH4_noncombustion_anthracite_europe = as.numeric(TIV_CH4_noncombustion_anthracite_europe),
           TIV_CH4_noncombustion_bituminouscoal_europe = as.numeric(TIV_CH4_noncombustion_bituminouscoal_europe),
           TIV_CH4_noncombustion_cokingcoal_europe = as.numeric(TIV_CH4_noncombustion_cokingcoal_europe),
           TIV_CH4_noncombustion_lignite_europe = as.numeric(TIV_CH4_noncombustion_lignite_europe),
           TIV_CH4_noncombustion_subbituminouscoal_europe = as.numeric(TIV_CH4_noncombustion_subbituminouscoal_europe),
           TIV_CH4_noncombustion_oilrefinery_europe = as.numeric(TIV_CH4_noncombustion_oilrefinery_europe),
           TIV_CH4_agriculture_europe = as.numeric(TIV_CH4_agriculture_europe),
           TIV_CH4_waste_europe = as.numeric(TIV_CH4_waste_europe),
           TIV_N2O_combustion_europe = as.numeric(TIV_N2O_combustion_europe),
           TIV_N2O_agriculture_europe = as.numeric(TIV_N2O_agriculture_europe),
           TIV_SF6_europe = as.numeric(TIV_SF6_europe),
           TIV_HFC_europe = as.numeric(TIV_HFC_europe),
           TIV_PFC_europe = as.numeric(TIV_PFC_europe),
           TIV_energy_europe = as.numeric(TIV_energy_europe))
  
  europe_TIVs = rbind(europe_TIVs, look_europe)
  
  # total national footprints
  
  # FD labels
  
  Exiobase_FD_labels = as.data.frame(t(read.csv(paste0(data_dir_exiobase, "/Exiobase_FD_labels_ixi.csv")))[-1,-3]) %>%
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK")) 
  
  national_CO2_combustion_footprints = Exiobase_FD * t(Exiobase_TIV_co2_combustion_bp)
  
  national_CO2_noncombustion_cement_footprints = Exiobase_FD * t(Exiobase_TIV_co2_noncombustion_cement_bp)
  
  national_CO2_noncombustion_lime_footprints = Exiobase_FD * t(Exiobase_TIV_co2_noncombustion_lime_bp)
  
  national_CO2_agriculture_peatdecay_footprints = Exiobase_FD * t(Exiobase_TIV_co2_agriculture_peatdecay_bp)
  
  national_CO2_waste_biogenic_footprints = Exiobase_FD * t(Exiobase_TIV_co2_waste_biogenic_bp)
  
  national_CO2_waste_fossil_footprints = Exiobase_FD * t(Exiobase_TIV_co2_waste_fossil_bp)
  
  national_CH4_combustion_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_combustion_bp)
  
  national_CH4_noncombustion_gas_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_gas_bp)
  
  national_CH4_noncombustion_oil_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_oil_bp)
  
  national_CH4_noncombustion_anthracite_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_anthracite_bp)
  
  national_CH4_noncombustion_bituminouscoal_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_bituminouscoal_bp)
  
  national_CH4_noncombustion_cokingcoal_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_cokingcoal_bp)
  
  national_CH4_noncombustion_lignite_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_lignite_bp)
  
  national_CH4_noncombustion_subbituminouscoal_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_subbituminouscoal_bp)
  
  national_CH4_noncombustion_oilrefinery_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_noncombustion_oilrefinery_bp)
  
  national_CH4_agriculture_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_agriculture_bp)
  
  national_CH4_waste_footprints = Exiobase_FD * t(Exiobase_TIV_ch4_waste_bp)
  
  national_N2O_combustion_footprints = Exiobase_FD * t(Exiobase_TIV_n2o_combustion_bp)
  
  national_N2O_agriculture_footprints = Exiobase_FD * t(Exiobase_TIV_n2o_agriculture_bp)
  
  national_SF6_footprints = Exiobase_FD * t(Exiobase_TIV_sf6_bp)
  
  national_HFC_footprints = Exiobase_FD * t(Exiobase_TIV_hfc_bp)
  
  national_PFC_footprints = Exiobase_FD * t(Exiobase_TIV_pfc_bp)
  
  national_energy_footprints = Exiobase_FD * t(Exiobase_TIV_energy_use_bp)
  
  
  # together
  
  national_footprints_w_labels = cbind(Exiobase_FD_labels, 
                                       rowSums(t(national_CO2_combustion_footprints)),
                                       rowSums(t(national_CO2_noncombustion_cement_footprints)), 
                                       rowSums(t(national_CO2_noncombustion_lime_footprints)), 
                                       rowSums(t(national_CO2_agriculture_peatdecay_footprints)), 
                                       rowSums(t(national_CO2_waste_biogenic_footprints)), 
                                       rowSums(t(national_CO2_waste_fossil_footprints)),
                                       rowSums(t(national_CH4_combustion_footprints)),
                                       rowSums(t(national_CH4_noncombustion_gas_footprints)),
                                       rowSums(t(national_CH4_noncombustion_oil_footprints)),
                                       rowSums(t(national_CH4_noncombustion_anthracite_footprints)), 
                                       rowSums(t(national_CH4_noncombustion_bituminouscoal_footprints)), 
                                       rowSums(t(national_CH4_noncombustion_cokingcoal_footprints)),
                                       rowSums(t(national_CH4_noncombustion_lignite_footprints)),
                                       rowSums(t(national_CH4_noncombustion_subbituminouscoal_footprints)), 
                                       rowSums(t(national_CH4_noncombustion_oilrefinery_footprints)), 
                                       rowSums(t(national_CH4_agriculture_footprints)),
                                       rowSums(t(national_CH4_waste_footprints)),
                                       rowSums(t(national_N2O_combustion_footprints)),
                                       rowSums(t(national_N2O_agriculture_footprints)),
                                       rowSums(t(national_SF6_footprints)),
                                       rowSums(t(national_HFC_footprints)),
                                       rowSums(t(national_PFC_footprints)),
                                       rowSums(t(national_energy_footprints))) %>%
    mutate(V1 = dplyr::recode(V1,"GR" = "EL","GB" = "UK")) 
  
  year_national_fp = as.character(rep(year_current,nrow(national_footprints_w_labels)))
  
  # direct FD emissions
  
  direct_FD_extensions = read.csv(paste0(data_dir_exiobase, "/IOT_", year_current, "_ixi/satellite/F_hh.csv", sep = ""),row.names=NULL,as.is=TRUE)[3:1115,3:345]
  direct_FD_extensions[is.na(direct_FD_extensions)]=0
  direct_FD_extensions = mapply(direct_FD_extensions, FUN = as.numeric)
  direct_FD_extensions = matrix(data=direct_FD_extensions,ncol=343,nrow=1113)
  
  direct_FD_co2_combustion = direct_FD_extensions[24,]
  direct_FD_co2_noncombustion_cement = direct_FD_extensions[93,]
  direct_FD_co2_noncombustion_lime = direct_FD_extensions[94,]
  direct_FD_co2_agriculture_peatdecay = direct_FD_extensions[428,]
  direct_FD_co2_waste_biogenic = direct_FD_extensions[438,]
  direct_FD_co2_waste_fossil = direct_FD_extensions[439,]
  direct_FD_ch4_combustion = direct_FD_extensions[25,]*28
  direct_FD_ch4_noncombustion_gas = direct_FD_extensions[68,]*28
  direct_FD_ch4_noncombustion_oil = direct_FD_extensions[69,]*28
  direct_FD_ch4_noncombustion_anthracite = direct_FD_extensions[70,]*28
  direct_FD_ch4_noncombustion_bituminouscoal = direct_FD_extensions[71,]*28
  direct_FD_ch4_noncombustion_cokingcoal = direct_FD_extensions[72,]*28
  direct_FD_ch4_noncombustion_lignite = direct_FD_extensions[73,]*28
  direct_FD_ch4_noncombustion_subbituminouscoal = direct_FD_extensions[74,]*28
  direct_FD_ch4_noncombustion_oilrefinery = direct_FD_extensions[75,]*28
  direct_FD_ch4_agriculture = direct_FD_extensions[427,]*28
  direct_FD_ch4_waste = direct_FD_extensions[436,]*28
  direct_FD_n2o_combustion = direct_FD_extensions[26,]*265
  direct_FD_n2o_agriculture = direct_FD_extensions[430,]*265
  direct_FD_sf6 = direct_FD_extensions[424,]*23500
  direct_FD_hfc = direct_FD_extensions[425,]
  direct_FD_pfc = direct_FD_extensions[426,]
  direct_FD_energy = direct_FD_extensions[470,]
  
  
  direct_FD_fp = data.frame(direct_FD_co2_combustion,
                            direct_FD_co2_noncombustion_cement,
                            direct_FD_co2_noncombustion_lime,
                            direct_FD_co2_agriculture_peatdecay,
                            direct_FD_co2_waste_biogenic,
                            direct_FD_co2_waste_fossil,
                            direct_FD_ch4_combustion,
                            direct_FD_ch4_noncombustion_gas,
                            direct_FD_ch4_noncombustion_oil,
                            direct_FD_ch4_noncombustion_anthracite,
                            direct_FD_ch4_noncombustion_bituminouscoal,
                            direct_FD_ch4_noncombustion_cokingcoal,
                            direct_FD_ch4_noncombustion_lignite,
                            direct_FD_ch4_noncombustion_subbituminouscoal,
                            direct_FD_ch4_noncombustion_oilrefinery,
                            direct_FD_ch4_agriculture,
                            direct_FD_ch4_waste,
                            direct_FD_n2o-combustion,
                            direct_FD_n2o_agriculture,
                            direct_FD_sf6,
                            direct_FD_hfc,
                            direct_FD_pfc,
                            direct_FD_energy)
  
  look_national_fp = as.data.frame(cbind(year_national_fp,
                                         national_footprints_w_labels,
                                         direct_FD_fp)) %>% 
    rename(year = year_national_fp,
           geo = V1, 
           fd_category = V2, 
           co2_combustion = "rowSums(t(national_CO2_combustion_footprints))",
           co2_noncombustion_cement = "rowSums(t(national_CO2_noncombustion_cement_footprints))",
           co2_noncombustion_lime = "rowSums(t(national_CO2_noncombustion_lime_footprints))",
           co2_agriculture_peatdecay = "rowSums(t(national_CO2_agriculture_peatdecay_footprints))",
           co2_waste_biogenic = "rowSums(t(national_CO2_waste_biogenic_footprints))",
           co2_waste_fossil = "rowSums(t(national_CO2_waste_fossil_footprints))",
           ch4_combustion = "rowSums(t(national_CH4_combustion_footprints))",
           ch4_noncombustion_gas = "rowSums(t(national_CH4_noncombustion_gas_footprints))",
           ch4_noncombustion_oil = "rowSums(t(national_CH4_noncombustion_oil_footprints))",
           ch4_noncombustion_anthracite = "rowSums(t(national_CH4_noncombustion_anthracite_footprints))",
           ch4_noncombustion_bituminouscoal = "rowSums(t(national_CH4_noncombustion_bituminouscoal_footprints))",
           ch4_noncombustion_cokingcoal = "rowSums(t(national_CH4_noncombustion_cokingcoal_footprints))",
           ch4_noncombustion_lignite = "rowSums(t(national_CH4_noncombustion_lignite_footprints))",
           ch4_noncombustion_subbituminouscoal = "rowSums(t(national_CH4_noncombustion_subbituminouscoal_footprints))",
           ch4_noncombustion_oilrefinery = "rowSums(t(national_CH4_noncombustion_oilrefinery_footprints))",
           ch4_agriculture = "rowSums(t(national_CH4_agriculture_footprints))",
           ch4_waste = "rowSums(t(national_CH4_waste_footprints))",
           n2o_combustion = "rowSums(t(national_N2O_combustion_footprints))",
           n2o_agriculture = "rowSums(t(national_N2O_agriculture_footprints))",
           sf6 = "rowSums(t(national_SF6_footprints))",
           hfc = "rowSums(t(national_HFC_footprints))",
           pfc = "rowSums(t(national_PFC_footprints))",
           energy = "rowSums(t(national_energy_footprints))") %>%
    select(year,
           geo,
           fd_category,
           co2_combustion,
           direct_FD_co2_combustion,
           co2_noncombustion_cement,
           direct_FD_co2_noncombustion_cement,
           co2_noncombustion_lime,
           direct_FD_co2_noncombustion_lime,
           co2_agriculture_peatdecay,
           direct_FD_co2_agriculture_peatdecay,
           co2_waste_biogenic,
           direct_FD_co2_waste_biogenic,
           co2_waste_fossil,
           direct_FD_co2_waste_fossil,
           ch4_combustion,
           direct_FD_ch4_combustion,
           ch4_noncombustion_gas,
           direct_FD_ch4_noncombustion_gas,
           ch4_noncombustion_oil,
           direct_FD_ch4_noncombustion_oil,
           ch4_noncombustion_anthracite,
           direct_FD_ch4_noncombustion_anthracite,
           ch4_noncombustion_bituminouscoal,
           direct_FD_ch4_noncombustion_bituminouscoal,
           ch4_noncombustion_cokingcoal,
           direct_FD_ch4_noncombustion_cokingcoal,
           ch4_noncombustion_lignite,
           direct_FD_ch4_noncombustion_lignite,
           ch4_noncombustion_subbituminouscoal,
           direct_FD_ch4_noncombustion_subbituminouscoal,
           ch4_noncombustion_oilrefinery,
           direct_FD_ch4_noncombustion_oilrefinery,
           ch4_agriculture,
           direct_FD_ch4_agriculture,
           ch4_waste,
           direct_FD_ch4_waste,
           n2o_combustion,
           direct_FD_n2o_combustion,
           n2o_agriculture,
           direct_FD_n2o_agriculture,
           sf6,
           direct_FD_sf6,
           hfc,
           direct_FD_hfc,
           pfc,
           direct_FD_pfc,
           energy,
           direct_FD_energy)
  
  
  national_fp = rbind(national_fp, look_national_fp)
  
  
}



# option holding HBS exp ratios 

mean_expenditure_by_quintile_toggle = mean_expenditure_by_quintile_long_bp %>% 
  filter(!(quintile %in% c("TOTAL","UNK"))) %>%
  group_by(geo,year) %>%
  mutate(euro_pps_bp = as.numeric(euro_pps_bp),
         mean_exp_shares = euro_pps_bp/sum(euro_pps_bp))


ala = total_fd %>%
  left_join(mean_expenditure_by_quintile_toggle, by = c("geo","year","quintile"))



join_ala = mean_expenditure_by_coicop_sector_long_bp %>%
  left_join(ala, by = c("geo","quintile","year")) %>%
  mutate(year = as.numeric(year),
         eurostat_countries_colsums = as.numeric(eurostat_countries_colsums),
         pm_bp = as.numeric(pm_bp),
         fd_me = pm_bp*((eurostat_countries_colsums*mean_exp_shares)/1000)) 

Eurostat_countries_hh_fd_mean_TIV = as.data.frame(Eurostat_countries_hh_fd) %>% select(-year)

weighted_mean_TIV_with_labels = cbind(TIVs,Eurostat_countries_hh_fd_mean_TIV) %>%
  gather(geo,fd,-country_of_production,-year,-sector,-coicop,-five_sectors,
         -TIV_CO2_combustion,-TIV_CO2_noncombustion_cement,-TIV_CO2_noncombustion_lime,
         -TIV_CO2_agriculture_peatdecay,-TIV_CO2_waste_biogenic,
         -TIV_CO2_waste_fossil,-TIV_CH4_combustion,
         -TIV_CH4_noncombustion_gas,-TIV_CH4_noncombustion_oil,
         -TIV_CH4_noncombustion_anthracite,-TIV_CH4_noncombustion_bituminouscoal,
         -TIV_CH4_noncombustion_cokingcoal,-TIV_CH4_noncombustion_lignite,
         -TIV_CH4_noncombustion_subbituminouscoal,-TIV_CH4_noncombustion_oilrefinery,
         -TIV_CH4_agriculture,-TIV_CH4_waste,
         -TIV_N2O_combustion,-TIV_N2O_agriculture,-TIV_SF6,-TIV_HFC,-TIV_PFC,
         -TIV_energy) %>%
  group_by(geo,year,coicop) %>%
  mutate(fd = as.numeric(fd)) %>%
  mutate(TIV_CO2_combustion_weighted_average = sum((fd/sum(fd))*TIV_CO2_combustion),
         TIV_CO2_noncombustion_cement_weighted_average = sum((fd/sum(fd))*TIV_CO2_noncombustion_cement),
         TIV_CO2_noncombustion_lime_weighted_average = sum((fd/sum(fd))*TIV_CO2_noncombustion_lime),
         TIV_CO2_agriculture_peatdecay_weighted_average = sum((fd/sum(fd))*TIV_CO2_agriculture_peatdecay),
         TIV_CO2_waste_biogenic_weighted_average = sum((fd/sum(fd))*TIV_CO2_waste_biogenic),
         TIV_CO2_waste_fossil_weighted_average = sum((fd/sum(fd))*TIV_CO2_waste_fossil),
         TIV_CH4_combustion_weighted_average = sum((fd/sum(fd))*TIV_CH4_combustion),
         TIV_CH4_noncombustion_gas_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_gas),
         TIV_CH4_noncombustion_oil_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_oil),
         TIV_CH4_noncombustion_anthracite_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_anthracite),
         TIV_CH4_noncombustion_bituminouscoal_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_bituminouscoal),
         TIV_CH4_noncombustion_cokingcoal_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_cokingcoal),
         TIV_CH4_noncombustion_lignite_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_lignite),
         TIV_CH4_noncombustion_subbituminouscoal_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_subbituminouscoal),
         TIV_CH4_noncombustion_oilrefinery_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_oilrefinery),
         TIV_CH4_agriculture_weighted_average = sum((fd/sum(fd))*TIV_CH4_agriculture),
         TIV_CH4_waste_weighted_average = sum((fd/sum(fd))*TIV_CH4_waste),
         TIV_N2O_combustion_weighted_average = sum((fd/sum(fd))*TIV_N2O_combustion),
         TIV_N2O_agriculture_weighted_average = sum((fd/sum(fd))*TIV_N2O_agriculture),
         TIV_SF6_weighted_average = sum((fd/sum(fd))*TIV_SF6),
         TIV_HFC_weighted_average = sum((fd/sum(fd))*TIV_HFC),
         TIV_PFC_weighted_average = sum((fd/sum(fd))*TIV_PFC),
         TIV_energy_weighted_average = sum((fd/sum(fd))*TIV_energy)) %>%
  select(year,geo,coicop,TIV_CO2_combustion_weighted_average,
         TIV_CO2_noncombustion_cement_weighted_average,
         TIV_CO2_noncombustion_lime_weighted_average,
         TIV_CO2_agriculture_peatdecay_weighted_average,
         TIV_CO2_waste_biogenic_weighted_average,
         TIV_CO2_waste_fossil_weighted_average,
         TIV_CH4_combustion_weighted_average,
         TIV_CH4_noncombustion_gas_weighted_average,
         TIV_CH4_noncombustion_oil_weighted_average,
         TIV_CH4_noncombustion_anthracite_weighted_average,
         TIV_CH4_noncombustion_bituminouscoal_weighted_average,
         TIV_CH4_noncombustion_cokingcoal_weighted_average,
         TIV_CH4_noncombustion_lignite_weighted_average,
         TIV_CH4_noncombustion_subbituminouscoal_weighted_average,
         TIV_CH4_noncombustion_oilrefinery_weighted_average,
         TIV_CH4_agriculture_weighted_average,
         TIV_CH4_waste_weighted_average,
         TIV_N2O_combustion_weighted_average,
         TIV_N2O_agriculture_weighted_average,
         TIV_SF6_weighted_average,
         TIV_HFC_weighted_average,
         TIV_PFC_weighted_average,
         TIV_energy_weighted_average) %>%
  unique() 

weighted_mean_europe_TIV_with_labels = cbind(europe_TIVs, Eurostat_countries_hh_fd_mean_TIV) %>%
  gather(geo,fd,-country_of_production,-year,-sector,-coicop,-five_sectors,
         -TIV_CO2_combustion_europe,-TIV_CO2_combustion_not_europe,
         -TIV_CO2_noncombustion_cement_europe,-TIV_CO2_noncombustion_cement_not_europe,
         -TIV_CO2_noncombustion_lime_europe, -TIV_CO2_noncombustion_lime_not_europe,
         -TIV_CO2_agriculture_peatdecay_europe,-TIV_CO2_agriculture_peatdecay_not_europe,
         -TIV_CO2_waste_biogenic_europe, -TIV_CO2_waste_biogenic_not_europe,
         -TIV_CO2_waste_fossil_europe, -TIV_CO2_waste_fossil_not_europe,
         -TIV_CH4_combustion_europe,-TIV_CH4_combustion_not_europe,
         -TIV_CH4_noncombustion_gas_europe, -TIV_CH4_noncombustion_gas_not_europe,
         -TIV_CH4_noncombustion_oil_europe,-TIV_CH4_noncombustion_oil_not_europe,
         -TIV_CH4_noncombustion_anthracite_europe,-TIV_CH4_noncombustion_anthracite_not_europe,
         -TIV_CH4_noncombustion_bituminouscoal_europe,-TIV_CH4_noncombustion_bituminouscoal_not_europe,
         -TIV_CH4_noncombustion_cokingcoal_europe,-TIV_CH4_noncombustion_cokingcoal_not_europe,
         -TIV_CH4_noncombustion_lignite_europe,-TIV_CH4_noncombustion_lignite_not_europe,
         -TIV_CH4_noncombustion_subbituminouscoal_europe,-TIV_CH4_noncombustion_subbituminouscoal_not_europe,
         -TIV_CH4_noncombustion_oilrefinery_europe, -TIV_CH4_noncombustion_oilrefinery_not_europe,
         -TIV_CH4_agriculture_europe, -TIV_CH4_agriculture_not_europe,
         -TIV_CH4_waste_europe,-TIV_CH4_waste_not_europe,
         -TIV_N2O_combustion_europe,-TIV_N2O_combustion_not_europe,
         -TIV_N2O_agriculture_europe,-TIV_N2O_agriculture_not_europe,
         -TIV_SF6_europe,-TIV_SF6_not_europe,
         -TIV_HFC_europe,-TIV_HFC_not_europe,-TIV_PFC_europe,-TIV_PFC_not_europe,
         -TIV_energy_europe,-TIV_energy_not_europe) %>%
  group_by(geo,year,coicop) %>%
  mutate(fd = as.numeric(fd)) %>%
  mutate(TIV_CO2_combustion_europe_weighted_average = sum((fd/sum(fd))*TIV_CO2_combustion_europe),
         TIV_CO2_noncombustion_cement_europe_weighted_average = sum((fd/sum(fd))*TIV_CO2_noncombustion_cement_europe),
         TIV_CO2_noncombustion_lime_europe_weighted_average = sum((fd/sum(fd))*TIV_CO2_noncombustion_lime_europe),
         TIV_CO2_agriculture_peatdecay_europe_weighted_average = sum((fd/sum(fd))*TIV_CO2_agriculture_peatdecay_europe),
         TIV_CO2_waste_biogenic_europe_weighted_average = sum((fd/sum(fd))*TIV_CO2_waste_biogenic_europe),
         TIV_CO2_waste_fossil_europe_weighted_average = sum((fd/sum(fd))*TIV_CO2_waste_fossil_europe),
         TIV_CH4_combustion_europe_weighted_average = sum((fd/sum(fd))*TIV_CH4_combustion_europe),
         TIV_CH4_noncombustion_gas_europe_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_gas_europe),
         TIV_CH4_noncombustion_oil_europe_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_oil_europe),
         TIV_CH4_noncombustion_anthracite_europe_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_anthracite_europe),
         TIV_CH4_noncombustion_bituminouscoal_europe_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_bituminouscoal_europe),
         TIV_CH4_noncombustion_cokingcoal_europe_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_cokingcoal_europe),
         TIV_CH4_noncombustion_lignite_europe_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_lignite_europe),
         TIV_CH4_noncombustion_subbituminouscoal_europe_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_subbituminouscoal_europe),
         TIV_CH4_noncombustion_oilrefinery_europe_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_oilrefinery_europe),
         TIV_CH4_agriculture_europe_weighted_average = sum((fd/sum(fd))*TIV_CH4_agriculture_europe),
         TIV_CH4_waste_europe_weighted_average = sum((fd/sum(fd))*TIV_CH4_waste_europe),
         TIV_N2O_combustion_europe_weighted_average = sum((fd/sum(fd))*TIV_N2O_combustion_europe),
         TIV_N2O_agriculture_europe_weighted_average = sum((fd/sum(fd))*TIV_N2O_agriculture_europe),
         TIV_SF6_europe_weighted_average = sum((fd/sum(fd))*TIV_SF6_europe),
         TIV_HFC_europe_weighted_average = sum((fd/sum(fd))*TIV_HFC_europe),
         TIV_PFC_europe_weighted_average = sum((fd/sum(fd))*TIV_PFC_europe),
         TIV_energy_europe_weighted_average = sum((fd/sum(fd))*TIV_energy_europe)) %>%
  select(year,geo,coicop,TIV_CO2_combustion_europe_weighted_average,
         TIV_CO2_noncombustion_cement_europe_weighted_average,
         TIV_CO2_noncombustion_lime_europe_weighted_average,
         TIV_CO2_agriculture_peatdecay_europe_weighted_average,
         TIV_CO2_waste_biogenic_europe_weighted_average,
         TIV_CO2_waste_fossil_europe_weighted_average,
         TIV_CH4_combustion_europe_weighted_average,
         TIV_CH4_noncombustion_gas_europe_weighted_average,
         TIV_CH4_noncombustion_oil_europe_weighted_average,
         TIV_CH4_noncombustion_anthracite_europe_weighted_average,
         TIV_CH4_noncombustion_bituminouscoal_europe_weighted_average,
         TIV_CH4_noncombustion_cokingcoal_europe_weighted_average,
         TIV_CH4_noncombustion_lignite_europe_weighted_average,
         TIV_CH4_noncombustion_subbituminouscoal_europe_weighted_average,
         TIV_CH4_noncombustion_oilrefinery_europe_weighted_average,
         TIV_CH4_agriculture_europe_weighted_average,
         TIV_CH4_waste_europe_weighted_average,
         TIV_N2O_combustion_europe_weighted_average,
         TIV_N2O_agriculture_europe_weighted_average,
         TIV_SF6_europe_weighted_average,
         TIV_HFC_europe_weighted_average,
         TIV_PFC_europe_weighted_average,
         TIV_energy_europe_weighted_average) %>%
  unique()

domestic_TIVs_Eurostat = domestic_TIVs %>%
  filter(geo %in% c("AT",
                    "BG",
                    "BE",
                    "CY",
                    "CZ",
                    "DE",
                    "DK",
                    "EE",
                    "EL",
                    "ES",
                    "FI",
                    "FR",
                    "HR",
                    "HU",
                    "IE",
                    "IT",
                    "LT",
                    "LU",
                    "LV",
                    "MT",
                    "NL",
                    "NO",
                    "PL",
                    "PT",
                    "RO",
                    "SE",
                    "SI",
                    "SK",
                    "TR",
                    "UK"))

Eurostat_countries_hh_fd_long = as.data.frame(Eurostat_countries_hh_fd) %>%
  gather(geo,fd,-year) %>%
  arrange(year, match(geo, c("AT",
                             "BE",
                             "BG",
                             "CY",
                             "CZ",
                             "DE",
                             "DK",
                             "EE",
                             "ES",
                             "FI",
                             "FR",
                             "UK",
                             "EL",
                             "HR",
                             "HU",
                             "IE",
                             "IT",
                             "LT",
                             "LU",
                             "LV",
                             "MT",
                             "NL",
                             "NO",
                             "PL",
                             "PT",
                             "RO",
                             "SE",
                             "SI",
                             "SK",
                             "TR"))) %>% select(-year,-geo)

weighted_mean_domestic_TIV_with_labels = cbind(domestic_TIVs_Eurostat,Eurostat_countries_hh_fd_long) %>%
  group_by(geo,year,coicop) %>%
  mutate(fd = as.numeric(fd)) %>%
  mutate(TIV_CO2_combustion_domestic_weighted_average = sum((fd/sum(fd))*TIV_CO2_combustion_domestic),
         TIV_CO2_noncombustion_cement_domestic_weighted_average = sum((fd/sum(fd))*TIV_CO2_noncombustion_cement_domestic),
         TIV_CO2_noncombustion_lime_domestic_weighted_average = sum((fd/sum(fd))*TIV_CO2_noncombustion_lime_domestic),
         TIV_CO2_agriculture_peatdecay_domestic_weighted_average = sum((fd/sum(fd))*TIV_CO2_agriculture_peatdecay_domestic),
         TIV_CO2_waste_biogenic_domestic_weighted_average = sum((fd/sum(fd))*TIV_CO2_waste_biogenic_domestic),
         TIV_CO2_waste_fossil_domestic_weighted_average = sum((fd/sum(fd))*TIV_CO2_waste_fossil_domestic),
         TIV_CH4_combustion_domestic_weighted_average = sum((fd/sum(fd))*TIV_CH4_combustion_domestic),
         TIV_CH4_noncombustion_gas_domestic_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_gas_domestic),
         TIV_CH4_noncombustion_oil_domestic_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_oil_domestic),
         TIV_CH4_noncombustion_anthracite_domestic_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_anthracite_domestic),
         TIV_CH4_noncombustion_bituminouscoal_domestic_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_bituminouscoal_domestic),
         TIV_CH4_noncombustion_cokingcoal_domestic_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_cokingcoal_domestic),
         TIV_CH4_noncombustion_lignite_domestic_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_lignite_domestic),
         TIV_CH4_noncombustion_subbituminouscoal_domestic_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_subbituminouscoal_domestic),
         TIV_CH4_noncombustion_oilrefinery_domestic_weighted_average = sum((fd/sum(fd))*TIV_CH4_noncombustion_oilrefinery_domestic),
         TIV_CH4_agriculture_domestic_weighted_average = sum((fd/sum(fd))*TIV_CH4_agriculture_domestic),
         TIV_CH4_waste_domestic_weighted_average = sum((fd/sum(fd))*TIV_CH4_waste_domestic),
         TIV_N2O_combustion_domestic_weighted_average = sum((fd/sum(fd))*TIV_N2O_combustion_domestic),
         TIV_N2O_agriculture_domestic_weighted_average = sum((fd/sum(fd))*TIV_N2O_agriculture_domestic),
         TIV_SF6_domestic_weighted_average = sum((fd/sum(fd))*TIV_SF6_domestic),
         TIV_HFC_domestic_weighted_average = sum((fd/sum(fd))*TIV_HFC_domestic),
         TIV_PFC_domestic_weighted_average = sum((fd/sum(fd))*TIV_PFC_domestic),
         TIV_energy_domestic_weighted_average = sum((fd/sum(fd))*TIV_energy_domestic)) %>%
  select(year,geo,coicop,TIV_CO2_combustion_domestic_weighted_average,
         TIV_CO2_noncombustion_cement_domestic_weighted_average,
         TIV_CO2_noncombustion_lime_domestic_weighted_average,
         TIV_CO2_agriculture_peatdecay_domestic_weighted_average,
         TIV_CO2_waste_biogenic_domestic_weighted_average,
         TIV_CO2_waste_fossil_domestic_weighted_average,
         TIV_CH4_combustion_domestic_weighted_average,
         TIV_CH4_noncombustion_gas_domestic_weighted_average,
         TIV_CH4_noncombustion_oil_domestic_weighted_average,
         TIV_CH4_noncombustion_anthracite_domestic_weighted_average,
         TIV_CH4_noncombustion_bituminouscoal_domestic_weighted_average,
         TIV_CH4_noncombustion_cokingcoal_domestic_weighted_average,
         TIV_CH4_noncombustion_lignite_domestic_weighted_average,
         TIV_CH4_noncombustion_subbituminouscoal_domestic_weighted_average,
         TIV_CH4_noncombustion_oilrefinery_domestic_weighted_average,
         TIV_CH4_agriculture_domestic_weighted_average,
         TIV_CH4_waste_domestic_weighted_average,
         TIV_N2O_combustion_domestic_weighted_average,
         TIV_N2O_agriculture_domestic_weighted_average,
         TIV_SF6_domestic_weighted_average,
         TIV_HFC_domestic_weighted_average,
         TIV_PFC_domestic_weighted_average,
         TIV_energy_domestic_weighted_average) %>%
  unique() 





ok = join_ala %>% 
  mutate(year = as.character(year)) %>%
  left_join(weighted_mean_TIV_with_labels, by = c("geo","year","coicop")) %>%
  left_join(weighted_mean_europe_TIV_with_labels, by = c("geo","year","coicop")) %>%
  left_join(weighted_mean_domestic_TIV_with_labels, by = c("geo", "year", "coicop")) %>%
  mutate(co2_kg = fd_me*(TIV_CO2_combustion_weighted_average + TIV_CO2_noncombustion_cement_weighted_average +
                           TIV_CO2_noncombustion_lime_weighted_average + TIV_CO2_agriculture_peatdecay_weighted_average +
                           TIV_CO2_waste_biogenic_weighted_average + TIV_CO2_waste_fossil_weighted_average),
         co2_domestic_kg = fd_me*(TIV_CO2_combustion_domestic_weighted_average + TIV_CO2_noncombustion_cement_domestic_weighted_average +
                                    TIV_CO2_noncombustion_lime_domestic_weighted_average + TIV_CO2_agriculture_peatdecay_domestic_weighted_average +
                                    TIV_CO2_waste_biogenic_domestic_weighted_average + TIV_CO2_waste_fossil_domestic_weighted_average),
         co2_europe_kg = fd_me*((TIV_CO2_combustion_europe_weighted_average + TIV_CO2_noncombustion_cement_europe_weighted_average +
                                   TIV_CO2_noncombustion_lime_europe_weighted_average + TIV_CO2_agriculture_peatdecay_europe_weighted_average +
                                   TIV_CO2_waste_biogenic_europe_weighted_average + TIV_CO2_waste_fossil_europe_weighted_average) - (TIV_CO2_combustion_domestic_weighted_average + TIV_CO2_noncombustion_cement_domestic_weighted_average +
                                                                     TIV_CO2_noncombustion_lime_domestic_weighted_average + TIV_CO2_agriculture_peatdecay_domestic_weighted_average +
                                                                     TIV_CO2_waste_biogenic_domestic_weighted_average + TIV_CO2_waste_fossil_domestic_weighted_average)),
         co2eq_kg = fd_me*(TIV_CO2_combustion_weighted_average +
                             TIV_CO2_noncombustion_cement_weighted_average +
                             TIV_CO2_noncombustion_lime_weighted_average + TIV_CO2_agriculture_peatdecay_weighted_average +
                             TIV_CO2_waste_biogenic_weighted_average + TIV_CO2_waste_fossil_weighted_average +
                             TIV_CH4_combustion_weighted_average +
                             TIV_CH4_noncombustion_gas_weighted_average +
                           TIV_CH4_noncombustion_oil_weighted_average +
                           TIV_CH4_noncombustion_anthracite_weighted_average +
                           TIV_CH4_noncombustion_bituminouscoal_weighted_average +
                           TIV_CH4_noncombustion_cokingcoal_weighted_average +
                           TIV_CH4_noncombustion_lignite_weighted_average +
                           TIV_CH4_noncombustion_subbituminouscoal_weighted_average +
                           TIV_CH4_noncombustion_oilrefinery_weighted_average +
                           TIV_CH4_agriculture_weighted_average +
                           TIV_CH4_waste_weighted_average +
                             TIV_N2O_combustion_weighted_average +
                             TIV_N2O_agriculture_weighted_average + 
                             TIV_SF6_weighted_average +
                             TIV_HFC_weighted_average + 
                             TIV_PFC_weighted_average),
         co2eq_domestic_kg = fd_me*(TIV_CO2_combustion_domestic_weighted_average +
                                      TIV_CO2_noncombustion_cement_domestic_weighted_average +
                                      TIV_CO2_noncombustion_lime_domestic_weighted_average + TIV_CO2_agriculture_peatdecay_domestic_weighted_average +
                                      TIV_CO2_waste_biogenic_domestic_weighted_average + TIV_CO2_waste_fossil_domestic_weighted_average +
                                      TIV_CH4_combustion_domestic_weighted_average +
                                      TIV_CH4_noncombustion_gas_domestic_weighted_average +
                                      TIV_CH4_noncombustion_oil_domestic_weighted_average +
                                      TIV_CH4_noncombustion_anthracite_domestic_weighted_average +
                                      TIV_CH4_noncombustion_bituminouscoal_domestic_weighted_average +
                                      TIV_CH4_noncombustion_cokingcoal_domestic_weighted_average +
                                      TIV_CH4_noncombustion_lignite_domestic_weighted_average +
                                      TIV_CH4_noncombustion_subbituminouscoal_domestic_weighted_average +
                                      TIV_CH4_noncombustion_oilrefinery_domestic_weighted_average +
                                      TIV_CH4_agriculture_domestic_weighted_average +
                                      TIV_CH4_waste_domestic_weighted_average +
                                      TIV_N2O_combustion_domestic_weighted_average +
                                      TIV_N2O_agriculture_domestic_weighted_average +
                                      TIV_SF6_domestic_weighted_average +
                                      TIV_HFC_domestic_weighted_average + 
                                      TIV_PFC_domestic_weighted_average),
         co2eq_europe_kg = fd_me*((TIV_CO2_combustion_europe_weighted_average +
                                     TIV_CO2_noncombustion_cement_europe_weighted_average +
                                     TIV_CO2_noncombustion_lime_europe_weighted_average + TIV_CO2_agriculture_peatdecay_europe_weighted_average +
                                     TIV_CO2_waste_biogenic_europe_weighted_average + TIV_CO2_waste_fossil_europe_weighted_average +
                                     TIV_CH4_combustion_europe_weighted_average +
                                     TIV_CH4_noncombustion_gas_europe_weighted_average +
                                     TIV_CH4_noncombustion_oil_europe_weighted_average +
                                     TIV_CH4_noncombustion_anthracite_europe_weighted_average +
                                     TIV_CH4_noncombustion_bituminouscoal_europe_weighted_average +
                                     TIV_CH4_noncombustion_cokingcoal_europe_weighted_average +
                                     TIV_CH4_noncombustion_lignite_europe_weighted_average +
                                     TIV_CH4_noncombustion_subbituminouscoal_europe_weighted_average +
                                     TIV_CH4_noncombustion_oilrefinery_europe_weighted_average +
                                     TIV_CH4_agriculture_europe_weighted_average +
                                     TIV_CH4_waste_europe_weighted_average +
                                     TIV_N2O_combustion_europe_weighted_average +
                                     TIV_N2O_agriculture_europe_weighted_average +
                                     TIV_SF6_europe_weighted_average +
                                     TIV_HFC_europe_weighted_average + 
                                     TIV_PFC_europe_weighted_average) - 
                                    (TIV_CO2_combustion_domestic_weighted_average +
                                       TIV_CO2_noncombustion_cement_domestic_weighted_average +
                                       TIV_CO2_noncombustion_lime_domestic_weighted_average + TIV_CO2_agriculture_peatdecay_domestic_weighted_average +
                                       TIV_CO2_waste_biogenic_domestic_weighted_average + TIV_CO2_waste_fossil_domestic_weighted_average +
                                       TIV_CH4_combustion_domestic_weighted_average +
                                       TIV_CH4_noncombustion_gas_domestic_weighted_average +
                                       TIV_CH4_noncombustion_oil_domestic_weighted_average +
                                       TIV_CH4_noncombustion_anthracite_domestic_weighted_average +
                                       TIV_CH4_noncombustion_bituminouscoal_domestic_weighted_average +
                                       TIV_CH4_noncombustion_cokingcoal_domestic_weighted_average +
                                       TIV_CH4_noncombustion_lignite_domestic_weighted_average +
                                       TIV_CH4_noncombustion_subbituminouscoal_domestic_weighted_average +
                                       TIV_CH4_noncombustion_oilrefinery_domestic_weighted_average +
                                       TIV_CH4_agriculture_domestic_weighted_average +
                                       TIV_CH4_waste_domestic_weighted_average +
                                       TIV_N2O_combustion_domestic_weighted_average +
                                       TIV_N2O_agriculture_domestic_weighted_average +
                                       TIV_SF6_domestic_weighted_average +
                                       TIV_HFC_domestic_weighted_average + 
                                       TIV_PFC_domestic_weighted_average)),
         energy_use_TJ = fd_me*(TIV_energy_weighted_average),
         energy_use_domestic_TJ = fd_me*(TIV_energy_domestic_weighted_average),
         energy_use_europe_TJ = fd_me*(TIV_energy_europe_weighted_average - 
                                         TIV_energy_domestic_weighted_average))

# direct from FD - to go back to results without direct FD fp, do not run this next chunk and do not bind_rows with 'results'

env_ac_pefasu_no_TR = read_csv(paste0(data_dir_income_stratified_footprints, "/env_ac_pefasu_1_Data.csv")) %>%
  filter(TIME == 2015) %>%
  mutate(geo = dplyr::recode(GEO,"Austria" = "AT", 
                             "Belgium" = "BE",
                             "Cyprus" = "CY",
                             "Czechia" = "CZ",
                             "Denmark" = "DK",
                             "Estonia" = "EE",
                             "Finland" = "FI",
                             "France" = "FR",
                             "Germany (until 1990 former territory of the FRG)" = "DE",
                             "Greece" = "EL",
                             "Hungary" = "HU",
                             "Ireland" = "IE",
                             "Italy" = "IT",
                             "Latvia" = "LV",
                             "Lithuania" = "LT",
                             "Luxembourg" = "LU",
                             "Malta" = "MT",
                             "Netherlands" = "NL",
                             "Norway" = "NO",
                             "Poland" = "PL",
                             "Portugal" = "PT",
                             "Romania" = "RO",
                             "Slovakia" = "SK",
                             "Slovenia" = "SI",
                             "Spain" = "ES",
                             "Sweden" = "SE",
                             "United Kingdom" = "UK",
                             "Bulgaria" = "BG",
                             "Croatia" = "HR")) %>%
  select(NACE_R2,geo,Value) %>%
  mutate(Value = parse_number(Value),
         Value = as.numeric(Value)) %>%
  spread(NACE_R2,Value) %>%
  clean_names() %>%
  mutate(HH_HEAT = heating_cooling_activities_by_households/total_activities_by_households,
         HH_TRA = transport_activities_by_households/total_activities_by_households,
         HH_OTH = other_activities_by_households/total_activities_by_households) %>%
  select(geo,HH_HEAT,HH_TRA,HH_OTH) 


env_ac_pefasu_TR = env_ac_pefasu_no_TR %>%
  filter(geo == "BG") %>%
  mutate(geo = dplyr::recode(geo,
                             "BG" = "TR"))

env_ac_pefasu = rbind(env_ac_pefasu_no_TR,env_ac_pefasu_TR) %>%
  gather(sector,share_of_total_energy,-geo)

env_ac_ainah_r2 = read_csv(paste0(data_dir_income_stratified_footprints, "/env_ac_ainah_r2_1_Data.csv")) %>%
  filter(TIME == 2015) %>%
  mutate(geo = dplyr::recode(GEO,"Austria" = "AT", 
                             "Belgium" = "BE",
                             "Cyprus" = "CY",
                             "Czechia" = "CZ",
                             "Denmark" = "DK",
                             "Estonia" = "EE",
                             "Finland" = "FI",
                             "France" = "FR",
                             "Germany (until 1990 former territory of the FRG)" = "DE",
                             "Greece" = "EL",
                             "Hungary" = "HU",
                             "Ireland" = "IE",
                             "Italy" = "IT",
                             "Latvia" = "LV",
                             "Lithuania" = "LT",
                             "Luxembourg" = "LU",
                             "Malta" = "MT",
                             "Netherlands" = "NL",
                             "Norway" = "NO",
                             "Poland" = "PL",
                             "Portugal" = "PT",
                             "Romania" = "RO",
                             "Slovakia" = "SK",
                             "Slovenia" = "SI",
                             "Spain" = "ES",
                             "Sweden" = "SE",
                             "Turkey" = "TR",
                             "United Kingdom" = "UK",
                             "Bulgaria" = "BG",
                             "Croatia" = "HR")) %>%
  select(NACE_R2,AIRPOL,geo,Value) %>%
  mutate(Value = parse_number(Value),
         Value = as.numeric(Value)) %>%
  spread(NACE_R2,Value) %>%
  clean_names() %>%
  mutate(HH_HEAT = heating_cooling_activities_by_households/total_activities_by_households,
         HH_TRA = transport_activities_by_households/total_activities_by_households,
         HH_OTH = other_activities_by_households/total_activities_by_households) %>%
  select(geo,airpol,HH_HEAT,HH_TRA,HH_OTH) 


env_ac_ainah_r2_co2 = env_ac_ainah_r2 %>%
  filter(airpol == "Carbon dioxide") %>%
  select(-airpol) %>%
  gather(sector,share_of_total_co2,-geo)

env_ac_ainah_r2_ch4 = env_ac_ainah_r2 %>%
  filter(airpol == "Methane") %>%
  select(-airpol) %>%
  gather(sector,share_of_total_ch4,-geo)

env_ac_ainah_r2_n2o = env_ac_ainah_r2 %>%
  filter(airpol == "Nitrous oxide") %>%
  select(-airpol) %>%
  gather(sector,share_of_total_n2o,-geo)

direct_FD_fp_long = national_fp %>%
  filter(fd_category == "Final consumption expenditure by households",
         geo %in% c("AT",
                    "BE", "BG", "CY", "CZ",
                    "DE" , "DK" , "EE" , 
                    "ES" , "FI" , "FR" , 
                    "UK", "EL", "HR" ,
                    "HU" , "IE" , "IT" ,
                    "LT" , "LU" , "LV" ,
                    "MT" , "NL" , "PL" ,
                    "PT" , "TR" , "SK" ,
                    "SI" , "SE" , "RO" ,
                    "NO")) %>%
  select(year,geo,fd_category,direct_FD_co2_combustion,
         direct_FD_co2_noncombustion_cement,
         direct_FD_co2_noncombustion_lime,
         direct_FD_co2_agriculture_peatdecay,
         direct_FD_co2_waste_biogenic,
         direct_FD_co2_waste_fossil,
         direct_FD_ch4_combustion,
         direct_FD_ch4_noncombustion_gas,
         direct_FD_ch4_noncombustion_oil,
         direct_FD_ch4_noncombustion_anthracite,
         direct_FD_ch4_noncombustion_bituminouscoal,
         direct_FD_ch4_noncombustion_cokingcoal,
         direct_FD_ch4_noncombustion_lignite,
         direct_FD_ch4_noncombustion_subbituminouscoal,
         direct_FD_ch4_noncombustion_oilrefinery,
         direct_FD_ch4_agriculture,
         direct_FD_ch4_waste,
         direct_FD_n2o_combustion,
         direct_FD_n2o_agriculture,
         direct_FD_sf6,
         direct_FD_hfc,
         direct_FD_pfc,
         direct_FD_energy) %>%   
  slice(rep(1:n(), each = 3)) 

sector = rep(c("HH_HEAT","HH_TRA","HH_OTH"), nrow(direct_FD_fp_long)/3) 

direct_FD_fp_long_disagg = cbind(sector,direct_FD_fp_long) %>%
  mutate(coicop = ifelse(sector == "HH_TRA","CP072",
                         ifelse(sector == "HH_HEAT","CP045","CP05")), 
         five_sectors = ifelse(sector == "HH_TRA", "transport",
                               ifelse(sector == "HH_HEAT", "shelter", "manufactured goods"))) %>%
  left_join(env_ac_ainah_r2_co2, by = c("geo","sector")) %>%
  left_join(env_ac_ainah_r2_ch4, by = c("geo","sector")) %>%
  left_join(env_ac_ainah_r2_n2o, by = c("geo","sector")) %>%
  left_join(env_ac_pefasu, by = c("geo","sector")) %>%
  mutate(direct_FD_co2 = (direct_FD_co2_combustion +
                            direct_FD_co2_noncombustion_cement +
                            direct_FD_co2_noncombustion_lime +
                            direct_FD_co2_agriculture_peatdecay +
                            direct_FD_co2_waste_biogenic +
                            direct_FD_co2_waste_fossil)*share_of_total_co2,
         direct_FD_ch4 = (direct_FD_ch4_combustion +
                            direct_FD_ch4_noncombustion_gas +
                            direct_FD_ch4_noncombustion_oil +
                            direct_FD_ch4_noncombustion_anthracite +
                            direct_FD_ch4_noncombustion_bituminouscoal +
                            direct_FD_ch4_noncombustion_cokingcoal +
                            direct_FD_ch4_noncombustion_lignite +
                            direct_FD_ch4_noncombustion_subbituminouscoal +
                            direct_FD_ch4_noncombustion_oilrefinery +
                            direct_FD_ch4_agriculture +
                            direct_FD_ch4_waste)*share_of_total_ch4,
         direct_FD_n2o = (direct_FD_n2o_combustion +
                            direct_FD_n2o_agriculture)*share_of_total_n2o,
         direct_FD_energy = direct_FD_energy*share_of_total_energy) %>%
  left_join(shares, by = c("year","geo","coicop")) %>%
  mutate(disaggregated_direct_FD_co2 = direct_FD_co2*share,
         disaggregated_direct_FD_ch4 = direct_FD_ch4*share,
         disaggregated_direct_FD_n2o = direct_FD_n2o*share,
         disaggregated_direct_FD_energy = direct_FD_energy*share) %>%
  select(year,geo,sector, quintile,
         coicop, five_sectors,
         disaggregated_direct_FD_co2,
         disaggregated_direct_FD_ch4,
         disaggregated_direct_FD_n2o,
         disaggregated_direct_FD_energy) 

direct_FD_co2 = direct_FD_fp_long_disagg %>%
  select(year,geo,sector,quintile,coicop,five_sectors,disaggregated_direct_FD_co2) %>%
  spread(quintile,disaggregated_direct_FD_co2) %>%
  rename(q1_co2 = QUINTILE1,
         q2_co2 = QUINTILE2,
         q3_co2 = QUINTILE3,
         q4_co2 = QUINTILE4,
         q5_co2 = QUINTILE5) %>%
  mutate(q1_co2_domestic = q1_co2,
         q2_co2_domestic = q2_co2,
         q3_co2_domestic = q3_co2,
         q4_co2_domestic = q4_co2,
         q5_co2_domestic = q5_co2,
         co2_total = q1_co2+q2_co2+q3_co2+q4_co2+q5_co2,
         co2_total_domestic = q1_co2_domestic+
           q2_co2_domestic+q3_co2_domestic+
           q4_co2_domestic+q5_co2_domestic)

direct_FD_ch4 = direct_FD_fp_long_disagg %>%
  select(year,geo,sector,quintile,coicop,five_sectors,disaggregated_direct_FD_ch4) %>%
  spread(quintile,disaggregated_direct_FD_ch4) %>%
  rename(q1_ch4 = QUINTILE1,
         q2_ch4 = QUINTILE2,
         q3_ch4 = QUINTILE3,
         q4_ch4 = QUINTILE4,
         q5_ch4 = QUINTILE5) %>%
  mutate(q1_ch4_domestic = q1_ch4,
         q2_ch4_domestic = q2_ch4,
         q3_ch4_domestic = q3_ch4,
         q4_ch4_domestic = q4_ch4,
         q5_ch4_domestic = q5_ch4,
         ch4_total = q1_ch4+q2_ch4+q3_ch4+q4_ch4+q5_ch4,
         ch4_total_domestic = q1_ch4_domestic+
           q2_ch4_domestic+q3_ch4_domestic+
           q4_ch4_domestic+q5_ch4_domestic)


direct_FD_n2o = direct_FD_fp_long_disagg %>%
  select(year,geo,sector,quintile,coicop,five_sectors,disaggregated_direct_FD_n2o) %>%
  spread(quintile,disaggregated_direct_FD_n2o) %>%
  rename(q1_n2o = QUINTILE1,
         q2_n2o = QUINTILE2,
         q3_n2o = QUINTILE3,
         q4_n2o = QUINTILE4,
         q5_n2o = QUINTILE5) %>%
  mutate(q1_n2o_domestic = q1_n2o,
         q2_n2o_domestic = q2_n2o,
         q3_n2o_domestic = q3_n2o,
         q4_n2o_domestic = q4_n2o,
         q5_n2o_domestic = q5_n2o,
         n2o_total = q1_n2o+q2_n2o+q3_n2o+q4_n2o+q5_n2o,
         n2o_total_domestic = q1_n2o_domestic+
           q2_n2o_domestic+q3_n2o_domestic+
           q4_n2o_domestic+q5_n2o_domestic)

direct_FD_energy = direct_FD_fp_long_disagg %>%
  select(year,geo,sector,quintile,coicop,five_sectors,disaggregated_direct_FD_energy) %>%
  spread(quintile,disaggregated_direct_FD_energy) %>%
  rename(q1_energy = QUINTILE1,
         q2_energy = QUINTILE2,
         q3_energy = QUINTILE3,
         q4_energy = QUINTILE4,
         q5_energy = QUINTILE5) %>%
  mutate(q1_energy_domestic = q1_energy,
         q2_energy_domestic = q2_energy,
         q3_energy_domestic = q3_energy,
         q4_energy_domestic = q4_energy,
         q5_energy_domestic = q5_energy,
         energy_total = q1_energy+q2_energy+q3_energy+q4_energy+q5_energy,
         energy_total_domestic = q1_energy_domestic+
           q2_energy_domestic+q3_energy_domestic+
           q4_energy_domestic+q5_energy_domestic)


direct_FD_fp_wide = direct_FD_co2 %>%
  left_join(direct_FD_ch4, by = c("year","geo",
                                  "sector","coicop",
                                  "five_sectors")) %>%
  left_join(direct_FD_n2o, by = c("year","geo",
                                  "sector","coicop",
                                  "five_sectors")) %>%
  left_join(direct_FD_energy, by = c("year","geo",
                                     "sector","coicop",
                                     "five_sectors")) %>%
  mutate(country_of_production = geo) %>%
  mutate(q1_co2eq = q1_co2 + q1_ch4 + q1_n2o,
         q2_co2eq = q2_co2 + q2_ch4 + q2_n2o,
         q3_co2eq = q3_co2 + q3_ch4 + q3_n2o,
         q4_co2eq = q4_co2 + q4_ch4 + q4_n2o,
         q5_co2eq = q5_co2 + q5_ch4 + q5_n2o,
         co2eq_total = q1_co2eq +
           q2_co2eq + q3_co2eq +
           q4_co2eq + q5_co2eq,
         q1_co2eq_domestic = q1_co2_domestic + q1_ch4_domestic + q1_n2o_domestic,
         q2_co2eq_domestic = q2_co2_domestic + q2_ch4_domestic + q2_n2o_domestic,
         q3_co2eq_domestic = q3_co2_domestic + q3_ch4_domestic + q3_n2o_domestic,
         q4_co2eq_domestic = q4_co2_domestic + q4_ch4_domestic + q4_n2o_domestic,
         q5_co2eq_domestic = q5_co2_domestic + q5_ch4_domestic + q5_n2o_domestic,
         co2eq_total_domestic = q1_co2eq_domestic +
           q2_co2eq_domestic + q3_co2eq_domestic +
           q4_co2eq_domestic + q5_co2eq_domestic) %>%
  select(-q1_ch4,
         -q2_ch4,
         -q3_ch4,
         -q4_ch4,
         -q5_ch4,
         -ch4_total,
         -q1_ch4_domestic,
         -q2_ch4_domestic,
         -q3_ch4_domestic,
         -q4_ch4_domestic,
         -q5_ch4_domestic,
         -ch4_total_domestic,
         -q1_n2o,
         -q2_n2o,
         -q3_n2o,
         -q4_n2o,
         -q5_n2o,
         -n2o_total,
         -q1_n2o_domestic,
         -q2_n2o_domestic,
         -q3_n2o_domestic,
         -q4_n2o_domestic,
         -q5_n2o_domestic,
         -n2o_total_domestic)

direct_FD_fp_wide_all = direct_FD_fp_wide %>%
  clean_names() %>%
  select(year,geo,coicop,q1_co2:q5_co2,
         q1_co2_domestic:q5_co2_domestic,
         q1_co2eq:q5_co2eq,
         q1_co2eq_domestic:q5_co2eq_domestic,
         q1_energy:q5_energy,
         q1_energy_domestic:q5_energy_domestic)

## extract co2 and pivot long
cols_co2 = c("q1_co2", "q2_co2", "q3_co2", "q4_co2", "q5_co2")
tmp_co2 = direct_FD_fp_wide_all %>%
  select(year, geo, coicop, cols_co2) %>%
  pivot_longer(cols = cols_co2,
               names_to = "quintile",
               values_to = "co2_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

## extract co2 domestic and pivot long
cols_co2_domestic = c("q1_co2_domestic", "q2_co2_domestic", "q3_co2_domestic", "q4_co2_domestic", "q5_co2_domestic")
tmp_co2_domestic = direct_FD_fp_wide_all %>%
  select(year, geo, coicop, cols_co2_domestic) %>%
  pivot_longer(cols = cols_co2_domestic,
               names_to = "quintile",
               values_to = "co2_domestic_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

## extract co2eq and pivot long
cols_co2eq = c("q1_co2eq", "q2_co2eq", "q3_co2eq", "q4_co2eq", "q5_co2eq")
tmp_co2eq = direct_FD_fp_wide_all %>%
  select(year, geo, coicop, cols_co2eq) %>%
  pivot_longer(cols = cols_co2eq,
               names_to = "quintile",
               values_to = "co2eq_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

## extract co2eq domestic and pivot long
cols_co2eq_domestic = c("q1_co2eq_domestic", "q2_co2eq_domestic", "q3_co2eq_domestic", "q4_co2eq_domestic", "q5_co2eq_domestic")
tmp_co2eq_domestic = direct_FD_fp_wide_all %>%
  select(year, geo, coicop, cols_co2eq_domestic) %>%
  pivot_longer(cols = cols_co2eq_domestic,
               names_to = "quintile",
               values_to = "co2eq_domestic_kg") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

## extract energy use and pivot long
cols_energy = c("q1_energy","q2_energy","q3_energy","q4_energy","q5_energy")
tmp_energy = direct_FD_fp_wide_all %>%
  select(year, geo, coicop, cols_energy) %>%
  pivot_longer(cols = cols_energy,
               names_to = "quintile",
               values_to = "energy_use_TJ") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

## extract energy domestic and pivot long
cols_energy_domestic = c("q1_energy_domestic","q2_energy_domestic","q3_energy_domestic","q4_energy_domestic","q5_energy_domestic")
tmp_energy_domestic = direct_FD_fp_wide_all %>%
  select(year, geo, coicop, cols_energy_domestic) %>%
  pivot_longer(cols = cols_energy_domestic,
               names_to = "quintile",
               values_to = "energy_use_domestic_TJ") %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile)

direct_FD_fp_wide_recombined = tmp_co2 %>%
  left_join(tmp_co2_domestic, by=c("year", "geo", "coicop", "quint")) %>%
  left_join(tmp_co2eq, by=c("year", "geo", "coicop", "quint")) %>%
  left_join(tmp_co2eq_domestic, by=c("year", "geo", "coicop", "quint")) %>%
  left_join(tmp_energy, by=c("year", "geo", "coicop", "quint")) %>%
  left_join(tmp_energy_domestic, by=c("year", "geo", "coicop", "quint")) %>%
  clean_names() %>%
  mutate(year = as.numeric(year))

results = ok %>% 
  filter(!(geo %in% c("EA","EA12","EA13","EA17",
                      "EA18","EA19","EEA28","EEA30_2007",
                      "EFTA","EU15","EU25",
                      "EU27_2007", "EU27_2020",
                      "EU28","XK", "RS", 
                      "MK", "ME")),
         !(quintile %in% c("TOTAL","UNK")),
         !(year %in% c(1988,1994,1999))) %>%
  group_by(geo,quintile,year,coicop) %>%
  summarise(fd_me = sum(fd_me, na.rm = TRUE),
            co2_kg = sum(co2_kg, na.rm = TRUE),
            co2_domestic_kg = sum(co2_domestic_kg, na.rm = TRUE),
            co2_europe_kg = sum(co2_europe_kg, na.rm = TRUE),
            co2eq_kg = sum(co2eq_kg, na.rm = TRUE),
            co2eq_domestic_kg = sum(co2eq_domestic_kg, na.rm = TRUE),
            co2eq_europe_kg = sum(co2eq_europe_kg, na.rm = TRUE),
            energy_use_TJ = sum(energy_use_TJ, na.rm = TRUE),
            energy_use_domestic_TJ = sum(energy_use_domestic_TJ, na.rm = TRUE),
            energy_use_europe_TJ = sum(energy_use_europe_TJ, na.rm = TRUE)) %>% 
  ungroup() %>%
  mutate(year = as.numeric(year)) %>%
  na.omit() 

results_formatted = results %>%
  clean_names() %>%
  mutate(quint = parse_number(quintile)) %>%
  select(-quintile) %>%
  filter(coicop %in% c("CP011",
                       "CP012",
                       "CP02",
                       "CP03",
                       "rent",
                       "CP043",
                       "CP044",
                       "CP045",
                       "CP05",
                       "CP06",
                       "CP071",
                       "CP072",
                       "CP073",
                       "CP08",
                       "CP09",
                       "CP10",
                       "CP11",
                       "CP12"))

results_formatted_with_direct_FD_fp = bind_rows(results_formatted,direct_FD_fp_wide_recombined)


write.csv(results_formatted_with_direct_FD_fp, paste0(data_dir_income_stratified_footprints, "/results_formatted_method2_ixi.csv"))
write_rds(results_formatted_with_direct_FD_fp, paste0(data_dir_income_stratified_footprints, "/results_formatted_method2_ixi.rds"))

European expenditure deciles

  • need to download EUROSTAT households and Norway households
  1. The 'lfst_hhnhtych' table from EUROSTAT, selecting all available years and total households [accessed on 04.05.2020].

  2. Norway is missing from the 'lfst_hhnhtych' EUROSTAT table. We download Norwegian data from the Norwegian statistical office: https://www.ssb.no/en/statbank/table/10986/. We select 'Private households', 'the whole country', no household type selection, all years (2005-2019), and continue with 'Table - Layout 1', then save the table as a 'Tab delimited without heading (csv)' file [accessed on 04.05.2020].


# set target number of quantiles
target_eu_ntiles = 10

##### main paper results (main paper method, EXIOBASE industry-by-industry version)

# 1) load income-stratified-footprints formatted results file from previous code chunk
dat_results_raw = read_rds(here("analysis", "preprocessing", "income-stratified-footprints",
                                "results_formatted_method1_ixi.rds")) %>%
  ungroup() %>%
  mutate(year= strtoi(year)) %>%
  rename(iso2 = geo)

# get iso3 country codes to join with household data
country_codes = ISOcodes::ISO_3166_1 %>%
  select(iso2 = Alpha_2, iso3 = Alpha_3) %>%
  # resolve inconsistency between EUROSTAT and ISO for Greece and UK/Great Britain
  mutate(iso2 = if_else(iso2=="GR", "EL", iso2)) %>%
  mutate(iso2 = if_else(iso2=="GB", "UK", iso2))

# read in total private households data from EUROSTAT and Norway, merge, and write .csv 
## set 4 digits per value
options(digits=4)

## EUROSTAT total private households
total_private_households_Eurostat = read.csv(here("/analysis/preprocessing/income-stratified-footprints/lfst_hhnhtych_1_Data.csv")) %>%
  filter(!(GEO %in% c("European Union - 27 countries (from 2020)",
                    "Euro area - 19 countries  (from 2015)",
                    "European Union - 28 countries (2013-2020)",
                    "European Union - 15 countries (1995-2004)"))) %>%
  mutate(geo = dplyr::recode(GEO,
                             "Belgium" = "BE",
                             "Bulgaria" = "BG",
                             "Czechia" = "CZ",
                             "Denmark" = "DK",
                             "Germany (until 1990 former territory of the FRG)" = "DE",
                             "Estonia" = "EE",
                             "Ireland" = "IE",
                             "Greece" = "EL",
                             "Spain" = "ES",
                             "France" = "FR",
                             "Croatia" = "HR",
                             "Italy" = "IT",
                             "Cyprus" = "CY",
                             "Latvia" = "LV",
                             "Lithuania" = "LT",
                             "Luxembourg" = "LU",
                             "Hungary" = "HU",
                             "Malta" = "MT",
                             "Netherlands" = "NL",
                             "Austria" = "AT",
                             "Poland" = "PL",
                             "Portugal" = "PT",
                             "Romania" = "RO",
                             "Slovenia" = "SI",
                             "Slovakia" = "SK",
                             "Finland" = "FI",
                             "Sweden" = "SE",
                             "United Kingdom" = "UK",
                             "Montenegro" = "ME",
                             "North Macedonia" = "MK",
                             "Serbia" = "RS",
                             "Turkey" = "TR")) %>%
  select(TIME,geo,Value) %>%
  rename(year = TIME, total_private_households = Value) %>%
  mutate(total_private_households = as.character(total_private_households),
         total_private_households = parse_number(total_private_households),
         total_private_households = as.numeric(total_private_households),
         total_private_households = total_private_households*1000)

## Norway total private households
total_private_households_Norway = read.csv(here("/analysis/preprocessing/income-stratified-footprints/Privathusholdninger.csv")) %>%
  gather(year, total_private_households, Private.households.2005:Private.households.2019) %>%
  mutate(geo = dplyr::recode(region,
                             "0 The whole country" = "NO"),
         year = dplyr::recode(year,
                              "Private.households.2005" = 2005,
                              "Private.households.2006" = 2006,
                              "Private.households.2007" = 2007,
                              "Private.households.2008" = 2008,
                              "Private.households.2009" = 2009,
                              "Private.households.2010" = 2010,
                              "Private.households.2011" = 2011,
                              "Private.households.2012" = 2012,
                              "Private.households.2013" = 2013,
                              "Private.households.2014" = 2014,
                              "Private.households.2015" = 2015,
                              "Private.households.2016" = 2016,
                              "Private.households.2017" = 2017,
                              "Private.households.2018" = 2018,
                              "Private.households.2019" = 2019)) %>%
  select(year,geo,total_private_households)

## merge EUROSTAT and Norway total private households data
total_private_households = rbind(total_private_households_Eurostat,
                                 total_private_households_Norway) %>%
  mutate(geo = as.character(geo),
         year = as.numeric(year),
         total_private_households = as.numeric(total_private_households))

## write .csv file with all total private households data
write_csv(total_private_households, here("/analysis/preprocessing/income-stratified-footprints/total_private_households.csv"))
# the original 'total_private_households_original.csv' is in 'income-stratified-footprints-in-europe/data' - if something goes wrong
# with the main paper results (pulling from the mrio results file written later) then the problem is here, when I added 
# the as.character mutation in the total_private_households_Eurostat

## return to 2 digits per value
options(digits=2)

# 2) load merged total private households data 
hh_data = read_csv(here("analysis", "preprocessing", "income-stratified-footprints", 
                        "total_private_households.csv")) %>%
  mutate(imputed = if_else(is.na(total_private_households), TRUE, FALSE)) %>%
  rename(iso2 = geo) %>%
  group_by(iso2) %>%
  # impute households with next available neighbour
  mutate(hh = na_locf(total_private_households)) %>%
  left_join(country_codes, by="iso2") %>%
  select(-total_private_households)

#3) load EUROSTAT mean expenditures per household income quintile per household and per adult equivalent (written and saved in the previous, income-stratified-footprints code chunk)
df_expenditure_long = read_csv(here("analysis",
                                    "preprocessing",
                                    "income-stratified-footprints",
                                    "mean_expenditure_by_quintile_long.csv"),
                               na = ":") %>%
  #filter(year >=2010, geo != "IT") %>%
  #filter(year >=2005, geo != "IT") %>%
  #decide here
  filter(year >=2005) %>%
  mutate(imputed = if_else(is.na(mean_expenditure), TRUE, FALSE)) %>%
  group_by(geo,unit,quintile) %>%
  mutate(value = na_locf(mean_expenditure)) %>%
  select(-mean_expenditure) %>% 
  ungroup()

## calculate adult equivalents per household
df_adult_e_p_hh = df_expenditure_long %>%
  rename(iso2 = geo) %>%
  pivot_wider(id_cols = c(iso2, year, quintile, imputed), 
              names_from = unit, 
              values_from = value) %>%
  clean_names() %>%
  mutate(adult_e_p_hh = pps_hh/pps_ae) %>%
  left_join(country_codes, by="iso2") %>%
  mutate(iso3 = if_else(iso2 == "XK", "XKX", iso3),
         quint = parse_number(quintile))

## add quintile population data
mrio_results_with_adult_eq_all = dat_results_raw %>%
  filter(year %in% c(2005, 2010, 2015)) %>%
  left_join(hh_data, by=c("iso2", "year")) %>%
  mutate(hh_quintile = hh/5) %>% # population per country quinitle
  select(-hh) %>%
  rename(hh_imputed = imputed) %>%
  left_join(df_adult_e_p_hh %>%
              select(iso2, year, quint, imputed_ae = imputed, adult_e_p_hh), 
            by=c("iso2", "year", "quint")) %>%
  mutate(ae_quintile = hh_quintile * adult_e_p_hh) %>%
  select(-c(hh_quintile, adult_e_p_hh))

## for the European expenditure deciles we use only countries with data in 2005, 2010 and 2015. This excludes Luxembourg and Italy. 
complete_countries = mrio_results_with_adult_eq_all %>%
  group_by(year, iso2) %>%
  summarise(co2_kg = sum(co2_kg)) %>%
  ungroup() %>%
  filter(co2_kg>0) %>%
  select(iso2, year, co2_kg) %>%
  pivot_wider(id_cols = c(iso2), names_from = year, values_from = co2_kg) %>%
  drop_na() %>%
  select(iso2) %>%
  pull()

#df_adult_e_p_hh %>% #what is this?
#  filter(iso2 %in% complete_countries, year<=2015, year>=2005) %>%
#  mutate(quint = parse_number(quintile)) 

# calculate European expenditure deciles based on loaded income-stratified-footprints result file and adult equivalents.
# returns country quintiles mapped to European ntile rank and European ntile boundaries
# helper function called by function below
calculate_eu_ntiles <- function(pyear, pquantile_count=10) {
  
  country_data_annual_sorted = summary_country_fd %>%
    ungroup() %>%
    filter(year==pyear) %>%
    arrange(fd_pae_e) %>%
    mutate(idx = 1:n(),
           eu_q_rank = 0) # later to be filled with euro quintile rank
  
  # total European adult equivalents (of included countries) in year
  total_ae_in_year = sum(country_data_annual_sorted$ae_quintile)
  
  # quantile target ae population
  eu_decile_adult_eq = total_ae_in_year/pquantile_count
  
  # country quintles must be split to allocate ae population according to eu quantile target ae population
  # filtering by condition that can't be fulfilled is a lazy way to create an empty dataframe
  # of the same structure as country_data_annual_sorted
  additional_rows = country_data_annual_sorted %>%
    filter(year==1)
  
  # store quantile split values
  eu_quantile_boundaries = data.frame(euro_q_rank = 1:pquantile_count, p = 0)
  
  # loops through the ordered dataset, assigns European quantile rank
  # and splits quintiles where necessary
  eu_ae_current = 0
  euro_q_rank_current = 1
  for (row_idx in 1:nrow(country_data_annual_sorted)) {
    row = country_data_annual_sorted[row_idx,]
    if (row["ae_quintile"] + eu_ae_current <= eu_decile_adult_eq) {
      eu_ae_current = eu_ae_current + row["ae_quintile"]
      country_data_annual_sorted[row_idx, "eu_q_rank"] = euro_q_rank_current
    } else {
      ae_diff = eu_decile_adult_eq - eu_ae_current
      ## write rest of this European decile (split country quintile)
      new_row = country_data_annual_sorted[row_idx, ]
      new_row[1, "eu_q_rank"] = euro_q_rank_current
      new_row[1, "ae_quintile"] = ae_diff
      ## record European quantile boundary
      eu_quantile_boundaries[eu_quantile_boundaries$euro_q_rank==euro_q_rank_current, "p"] =
        country_data_annual_sorted[row_idx, "fd_pae_e"]
      ## put first part of population in overflow dataframe
      additional_rows = additional_rows %>%
        bind_rows(new_row)
      ## classify rest of country quintile population to next European quantile
      country_data_annual_sorted[row_idx, "ae_quintile"] = 
        country_data_annual_sorted[row_idx, "ae_quintile"] - (ae_diff+0.0001)
      euro_q_rank_current = euro_q_rank_current + 1
      country_data_annual_sorted[row_idx, "eu_q_rank"] = euro_q_rank_current
      eu_ae_current = country_data_annual_sorted[row_idx, "ae_quintile"]
      
    }
  }
  
  country_data_eu_quantiles = country_data_annual_sorted %>%
  bind_rows(additional_rows) %>%
  arrange(fd_pae_e, eu_q_rank) %>%
  mutate(idx = 1:n())

  # add zeroth and nth quantile (min and max)
  eu_quantile_boundaries[pquantile_count, "p"] = max(country_data_eu_quantiles$fd_pae_e)
  
  list("df_q_data" = country_data_eu_quantiles, "df_q_boundaries" = eu_quantile_boundaries)
}

# maps income-stratified-footprint results to European ntile ranks, returns mapping and ntile European boundaries
map_mrio_results_to_eu_ntiles <- function(pyear, ptarget_ntiles) {
  
  df_eu_ntiles = calculate_eu_ntiles(pyear, pquantile_count = ptarget_ntiles)
  df_eu_ntiles_data = df_eu_ntiles$df_q_data
  
  sector_mapping = mrio_results_with_adult_eq %>%
    group_by(sector_id) %>%#
    summarise(sector_agg_id = first(sector_agg_id)) %>%
    ungroup()
  
  df_mapped_data = mrio_results_with_adult_eq %>%
    select(year, 
           iso2, 
           quint, 
           sector_id, 
           fd_me, 
           co2_kg, 
           co2_domestic_kg, 
           co2_europe_kg,
           co2eq_kg, 
           co2eq_domestic_kg, 
           co2eq_europe_kg,
           energy_use_TJ, 
           energy_use_domestic_TJ,
           energy_use_europe_TJ,
           ae_quintile) %>%
    filter(year==pyear) %>%
    # calculate per adult equivalent values in quintiles
    mutate(fd_pae_e = fd_me*1000000/ae_quintile,
           co2_pae_kg = co2_kg/ae_quintile,
           co2_pae_dom_kg = co2_domestic_kg/ae_quintile,
           co2_pae_eu_kg = co2_europe_kg/ae_quintile,
           co2eq_pae_kg = co2eq_kg/ae_quintile,
           co2eq_pae_dom_kg = co2eq_domestic_kg/ae_quintile,
           co2eq_pae_eu_kg = co2eq_europe_kg/ae_quintile,
           energy_use_pae_tj = energy_use_TJ/ae_quintile,
           energy_use_dom_pae_tj = energy_use_domestic_TJ/ae_quintile,
           energy_use_eu_pae_tj = energy_use_europe_TJ/ae_quintile) %>%
    # remove totals
    select(-c(fd_me, 
              co2_kg,
              co2_domestic_kg,
              co2_europe_kg,
              co2eq_kg,
              co2eq_domestic_kg,
              co2eq_europe_kg,
              energy_use_TJ,
              energy_use_domestic_TJ,
              energy_use_europe_TJ,
              year, ae_quintile)) %>%
    full_join(df_eu_ntiles_data %>%
                rename(fd_pae_e_quint_tmp = fd_pae_e), by=c("iso2", "quint")) %>%
    rename(adult_eq = ae_quintile) %>% # country quintile and their split fraction population
    # recalculate totals
    mutate(fd_me = fd_pae_e*adult_eq/1000000,
           co2_kg = co2_pae_kg*adult_eq,
           co2_dom_kg = co2_pae_dom_kg*adult_eq,
           co2_eu_kg = co2_pae_eu_kg*adult_eq,
           co2eq_kg = co2eq_pae_kg*adult_eq,
           co2eq_dom_kg = co2eq_pae_dom_kg*adult_eq,
           co2eq_eu_kg = co2eq_pae_eu_kg*adult_eq,
           energy_use_tj = energy_use_pae_tj*adult_eq,
           energy_use_dom_tj = energy_use_dom_pae_tj*adult_eq,
           energy_use_eu_tj = energy_use_eu_pae_tj*adult_eq
           ) %>%
    left_join(sector_mapping, by="sector_id")
  
  list("df_mapped_data" = df_mapped_data, "df_ntile_boundaries" = df_eu_ntiles$df_q_boundaries)
  
}

# filter only countries with complete info for years 2005, 2010, 2015
mrio_results_with_adult_eq = mrio_results_with_adult_eq_all %>%
  filter(iso2 %in% complete_countries)

# summarize final demand per adult equivalent per quintile across all sectors as basis for European deciles for complete countries
summary_country_fd = mrio_results_with_adult_eq %>%
  group_by(iso2, year, quint) %>%
  summarise(ae_quintile = first(ae_quintile),
            fd_pae_e = sum(fd_me*1000000)/(ae_quintile))

# summarize final demand per adult equivalent per quintile across all sectors as basis for European deciles for all countries
summary_country_fd_all = mrio_results_with_adult_eq_all %>%
  group_by(iso2, year, quint) %>%
  summarise(ae_quintile = first(ae_quintile),
            fd_pae_e = sum(fd_me*1000000)/(ae_quintile))

df_mapped_result_2005 = map_mrio_results_to_eu_ntiles(2005, target_eu_ntiles)
df_mapped_result_2005_data = df_mapped_result_2005$df_mapped_data
df_mapped_result_2005_ntiles = df_mapped_result_2005$df_ntile_boundaries

df_mapped_result_2010 = map_mrio_results_to_eu_ntiles(2010, target_eu_ntiles)
df_mapped_result_2010_data = df_mapped_result_2010$df_mapped_data
df_mapped_result_2010_ntiles = df_mapped_result_2010$df_ntile_boundaries

df_mapped_result_2015 = map_mrio_results_to_eu_ntiles(2015, target_eu_ntiles)
df_mapped_result_2015_data = df_mapped_result_2015$df_mapped_data
df_mapped_result_2015_ntiles = df_mapped_result_2015$df_ntile_boundaries

df_mapped_result_data = df_mapped_result_2005_data %>%
  bind_rows(df_mapped_result_2010_data) %>%
  bind_rows(df_mapped_result_2015_data)

write_csv(df_mapped_result_data, 
          here(paste0("analysis/data/derived/mrio_results_eu_ntile_mapped_n_", target_eu_ntiles, ".csv")))


###### SI results, main paper method, EXIOBASE product-by-product version

# 1) load income-stratified-footprints formatted results file
dat_results_raw = read_rds(here("analysis", "preprocessing", "income-stratified-footprints",
                            "results_formatted_method1_pxp.rds")) %>%
  ungroup() %>%
  mutate(year= strtoi(year)) %>%
  rename(iso2 = geo)

# get iso3 country codes to join with household data
country_codes = ISOcodes::ISO_3166_1 %>%
  select(iso2 = Alpha_2, iso3 = Alpha_3) %>%
  # resolve inconsistency between EUROSTAT and ISO for Greece and UK/Great Britain
  mutate(iso2 = if_else(iso2=="GR", "EL", iso2)) %>%
  mutate(iso2 = if_else(iso2=="GB", "UK", iso2))

# read in total private households data from EUROSTAT and Norway, merge, and write .csv 
## set 4 digits per value
options(digits=4)

## EUROSTAT total private households
total_private_households_Eurostat = read.csv(here("/analysis/preprocessing/income-stratified-footprints/lfst_hhnhtych_1_Data.csv")) %>%
  filter(!(GEO %in% c("European Union - 27 countries (from 2020)",
                    "Euro area - 19 countries  (from 2015)",
                    "European Union - 28 countries (2013-2020)",
                    "European Union - 15 countries (1995-2004)"))) %>%
  mutate(geo = dplyr::recode(GEO,
                             "Belgium" = "BE",
                             "Bulgaria" = "BG",
                             "Czechia" = "CZ",
                             "Denmark" = "DK",
                             "Germany (until 1990 former territory of the FRG)" = "DE",
                             "Estonia" = "EE",
                             "Ireland" = "IE",
                             "Greece" = "EL",
                             "Spain" = "ES",
                             "France" = "FR",
                             "Croatia" = "HR",
                             "Italy" = "IT",
                             "Cyprus" = "CY",
                             "Latvia" = "LV",
                             "Lithuania" = "LT",
                             "Luxembourg" = "LU",
                             "Hungary" = "HU",
                             "Malta" = "MT",
                             "Netherlands" = "NL",
                             "Austria" = "AT",
                             "Poland" = "PL",
                             "Portugal" = "PT",
                             "Romania" = "RO",
                             "Slovenia" = "SI",
                             "Slovakia" = "SK",
                             "Finland" = "FI",
                             "Sweden" = "SE",
                             "United Kingdom" = "UK",
                             "Montenegro" = "ME",
                             "North Macedonia" = "MK",
                             "Serbia" = "RS",
                             "Turkey" = "TR")) %>%
  select(TIME,geo,Value) %>%
  rename(year = TIME, total_private_households = Value) %>%
  mutate(total_private_households = as.character(total_private_households),
         total_private_households = parse_number(total_private_households),
         total_private_households = as.numeric(total_private_households),
         total_private_households = total_private_households*1000)

## Norway total private households
total_private_households_Norway = read.csv(here("/analysis/preprocessing/income-stratified-footprints/Privathusholdninger.csv")) %>%
  gather(year, total_private_households, Private.households.2005:Private.households.2019) %>%
  mutate(geo = dplyr::recode(region,
                             "0 The whole country" = "NO"),
         year = dplyr::recode(year,
                              "Private.households.2005" = 2005,
                              "Private.households.2006" = 2006,
                              "Private.households.2007" = 2007,
                              "Private.households.2008" = 2008,
                              "Private.households.2009" = 2009,
                              "Private.households.2010" = 2010,
                              "Private.households.2011" = 2011,
                              "Private.households.2012" = 2012,
                              "Private.households.2013" = 2013,
                              "Private.households.2014" = 2014,
                              "Private.households.2015" = 2015,
                              "Private.households.2016" = 2016,
                              "Private.households.2017" = 2017,
                              "Private.households.2018" = 2018,
                              "Private.households.2019" = 2019)) %>%
  select(year,geo,total_private_households)

## merge EUROSTAT and Norway total private households data
total_private_households = rbind(total_private_households_Eurostat,
                                 total_private_households_Norway) %>%
  mutate(geo = as.character(geo),
         year = as.numeric(year),
         total_private_households = as.numeric(total_private_households))

## write .csv file with all total private households data
write_csv(total_private_households, here("/analysis/preprocessing/income-stratified-footprints/total_private_households.csv"))
# the original 'total_private_households_original.csv' is in 'income-stratified-footprints-in-europe/data' - if something goes wrong
# with the main paper results (pulling from the mrio results file written later) then the problem is here, when I added 
# the as.character mutation in the total_private_households_Eurostat

## return to 2 digits per value
options(digits=2)

# 2) load merged total private households data 
hh_data = read_csv(here("analysis", "preprocessing", "income-stratified-footprints",
                        "total_private_households.csv")) %>%
  mutate(imputed = if_else(is.na(total_private_households), TRUE, FALSE)) %>%
  rename(iso2 = geo) %>%
  group_by(iso2) %>%
  # impute households with next available neighbour
  mutate(hh = na_locf(total_private_households)) %>%
  left_join(country_codes, by="iso2") %>%
  select(-total_private_households)

#3) load EUROSTAT mean expenditures per household income quintile per household and per adult equivalent (written and saved in the previous, income-stratified-footprints code chunk)
df_expenditure_long = read_csv(here("analysis", "preprocessing", "income-stratified-footprints",
                                    "mean_expenditure_by_quintile_long.csv"),
                               na = ":") %>%
  #filter(year >=2010, geo != "IT") %>%
  #filter(year >=2005, geo != "IT") %>%
  #decide here
  filter(year >=2005) %>%
  mutate(imputed = if_else(is.na(mean_expenditure), TRUE, FALSE)) %>%
  group_by(geo,unit,quintile) %>%
  mutate(value = na_locf(mean_expenditure)) %>%
  select(-mean_expenditure) %>% 
  ungroup()

## calculate adult equivalents per household
df_adult_e_p_hh = df_expenditure_long %>%
  rename(iso2 = geo) %>%
  pivot_wider(id_cols = c(iso2, year, quintile, imputed), 
              names_from = unit, 
              values_from = value) %>%
  clean_names() %>%
  mutate(adult_e_p_hh = pps_hh/pps_ae) %>%
  left_join(country_codes, by="iso2") %>%
  mutate(iso3 = if_else(iso2 == "XK", "XKX", iso3),
         quint = parse_number(quintile))

## add quintile population data
mrio_results_with_adult_eq_all = dat_results_raw %>%
  filter(year %in% c(2005, 2010, 2015)) %>%
  left_join(hh_data, by=c("iso2", "year")) %>%
  mutate(hh_quintile = hh/5) %>% # population per country quinitle
  select(-hh) %>%
  rename(hh_imputed = imputed) %>%
  left_join(df_adult_e_p_hh %>%
              select(iso2, year, quint, imputed_ae = imputed, adult_e_p_hh), 
            by=c("iso2", "year", "quint")) %>%
  mutate(ae_quintile = hh_quintile * adult_e_p_hh) %>%
  select(-c(hh_quintile, adult_e_p_hh))

## for the European expenditure deciles we use only countries with data in 2005, 2010 and 2015. This excludes Luxembourg and Italy. 
complete_countries = mrio_results_with_adult_eq_all %>%
  group_by(year, iso2) %>%
  summarise(co2_kg = sum(co2_kg)) %>%
  ungroup() %>%
  filter(co2_kg>0) %>%
  select(iso2, year, co2_kg) %>%
  pivot_wider(id_cols = c(iso2), names_from = year, values_from = co2_kg) %>%
  drop_na() %>%
  select(iso2) %>%
  pull()

df_adult_e_p_hh %>%
  filter(iso2 %in% complete_countries, year<=2015, year>=2005) %>%
  mutate(quint = parse_number(quintile)) 

# calculate European expenditure deciles based on loaded income-stratified-footprints result file and adult equivalents.
# returns country quintiles mapped to European ntile rank and European ntile boundaries
# helper function called by function below
calculate_eu_ntiles <- function(pyear, pquantile_count=10) {
  
  country_data_annual_sorted = summary_country_fd %>%
    ungroup() %>%
    filter(year==pyear) %>%
    arrange(fd_pae_e) %>%
    mutate(idx = 1:n(),
           eu_q_rank = 0) # later to be filled with euro quintile rank
  
  # total European adult equivalents (of included countries) in year
  total_ae_in_year = sum(country_data_annual_sorted$ae_quintile)
  
  # quantile target ae population
  eu_decile_adult_eq = total_ae_in_year/pquantile_count
  
  # country quintiles must be split to allocate ae population according to European quantile target ae population
  # filtering by condition that cant be fulfilled is a lazy way to create an empty dataframe
  # of the same structure as country_data_annual_sorted
  additional_rows = country_data_annual_sorted %>%
    filter(year==1)
  
  # store quantile split values
  eu_quantile_boundaries = data.frame(euro_q_rank = 1:pquantile_count, p = 0)
  
  # loops through the ordered dataset, assignes euro quantile rank
  # and splits quintiles where necessary
  eu_ae_current = 0
  euro_q_rank_current = 1
  for (row_idx in 1:nrow(country_data_annual_sorted)) {
    row = country_data_annual_sorted[row_idx,]
    if (row["ae_quintile"] + eu_ae_current <= eu_decile_adult_eq) {
      eu_ae_current = eu_ae_current + row["ae_quintile"]
      country_data_annual_sorted[row_idx, "eu_q_rank"] = euro_q_rank_current
    } else {
      ae_diff = eu_decile_adult_eq - eu_ae_current
      ## write rest of this European decile (split country quintile)
      new_row = country_data_annual_sorted[row_idx, ]
      new_row[1, "eu_q_rank"] = euro_q_rank_current
      new_row[1, "ae_quintile"] = ae_diff
      ## record European quantile boundary
      eu_quantile_boundaries[eu_quantile_boundaries$euro_q_rank==euro_q_rank_current, "p"] =
        country_data_annual_sorted[row_idx, "fd_pae_e"]
      ## put first part of population in overflow dataframe
      additional_rows = additional_rows %>%
        bind_rows(new_row)
      ## classify rest of country quintile population to next European quantile
      country_data_annual_sorted[row_idx, "ae_quintile"] = 
        country_data_annual_sorted[row_idx, "ae_quintile"] - (ae_diff+0.0001)
      euro_q_rank_current = euro_q_rank_current + 1
      country_data_annual_sorted[row_idx, "eu_q_rank"] = euro_q_rank_current
      eu_ae_current = country_data_annual_sorted[row_idx, "ae_quintile"]
      
    }
  }
  
  country_data_eu_quantiles = country_data_annual_sorted %>%
  bind_rows(additional_rows) %>%
  arrange(fd_pae_e, eu_q_rank) %>%
  mutate(idx = 1:n())

  # add zeroth and nth quantile (min and max)
  eu_quantile_boundaries[pquantile_count, "p"] = max(country_data_eu_quantiles$fd_pae_e)
  
  list("df_q_data" = country_data_eu_quantiles, "df_q_boundaries" = eu_quantile_boundaries)
}

# maps income-stratified-footprint results to European ntile ranks, returns mapping and ntile European boundaries
map_mrio_results_to_eu_ntiles <- function(pyear, ptarget_ntiles) {
  
  df_eu_ntiles = calculate_eu_ntiles(pyear, pquantile_count = ptarget_ntiles)
  df_eu_ntiles_data = df_eu_ntiles$df_q_data
  
  sector_mapping = mrio_results_with_adult_eq %>%
    group_by(sector_id) %>%#
    summarise(sector_agg_id = first(sector_agg_id)) %>%
    ungroup()
  
  df_mapped_data = mrio_results_with_adult_eq %>%
    select(year, 
           iso2, 
           quint, 
           sector_id, 
           fd_me, 
           co2_kg, 
           co2_domestic_kg, 
           co2_europe_kg,
           co2eq_kg, 
           co2eq_domestic_kg, 
           co2eq_europe_kg,
           energy_use_TJ, 
           energy_use_domestic_TJ,
           energy_use_europe_TJ,
           ae_quintile) %>%
    filter(year==pyear) %>%
    # calculate per adult equivalent values in quintiles
    mutate(fd_pae_e = fd_me*1000000/ae_quintile,
           co2_pae_kg = co2_kg/ae_quintile,
           co2_pae_dom_kg = co2_domestic_kg/ae_quintile,
           co2_pae_eu_kg = co2_europe_kg/ae_quintile,
           co2eq_pae_kg = co2eq_kg/ae_quintile,
           co2eq_pae_dom_kg = co2eq_domestic_kg/ae_quintile,
           co2eq_pae_eu_kg = co2eq_europe_kg/ae_quintile,
           energy_use_pae_tj = energy_use_TJ/ae_quintile,
           energy_use_dom_pae_tj = energy_use_domestic_TJ/ae_quintile,
           energy_use_eu_pae_tj = energy_use_europe_TJ/ae_quintile) %>%
    # remove totals
    select(-c(fd_me, 
              co2_kg,
              co2_domestic_kg,
              co2_europe_kg,
              co2eq_kg,
              co2eq_domestic_kg,
              co2eq_europe_kg,
              energy_use_TJ,
              energy_use_domestic_TJ,
              energy_use_europe_TJ,
              year, ae_quintile)) %>%
    full_join(df_eu_ntiles_data %>%
                rename(fd_pae_e_quint_tmp = fd_pae_e), by=c("iso2", "quint")) %>%
    rename(adult_eq = ae_quintile) %>% # country quintile and their split fraction population
    # recalculate totals
    mutate(fd_me = fd_pae_e*adult_eq/1000000,
           co2_kg = co2_pae_kg*adult_eq,
           co2_dom_kg = co2_pae_dom_kg*adult_eq,
           co2_eu_kg = co2_pae_eu_kg*adult_eq,
           co2eq_kg = co2eq_pae_kg*adult_eq,
           co2eq_dom_kg = co2eq_pae_dom_kg*adult_eq,
           co2eq_eu_kg = co2eq_pae_eu_kg*adult_eq,
           energy_use_tj = energy_use_pae_tj*adult_eq,
           energy_use_dom_tj = energy_use_dom_pae_tj*adult_eq,
           energy_use_eu_tj = energy_use_eu_pae_tj*adult_eq
           ) %>%
    left_join(sector_mapping, by="sector_id")
  
  list("df_mapped_data" = df_mapped_data, "df_ntile_boundaries" = df_eu_ntiles$df_q_boundaries)
  
}

# filter only countries with complete info for years 2005, 2010, 2015
mrio_results_with_adult_eq = mrio_results_with_adult_eq_all %>%
  filter(iso2 %in% complete_countries)

# summarize final demand per adult equivalent per quintile across all sectors as basis for European deciles for complete countries
summary_country_fd = mrio_results_with_adult_eq %>%
  group_by(iso2, year, quint) %>%
  summarise(ae_quintile = first(ae_quintile),
            fd_pae_e = sum(fd_me*1000000)/(ae_quintile))

# summarize final demand per adult equivalent per quintile across all sectors as basis for European deciles for all countries
summary_country_fd_all = mrio_results_with_adult_eq_all %>%
  group_by(iso2, year, quint) %>%
  summarise(ae_quintile = first(ae_quintile),
            fd_pae_e = sum(fd_me*1000000)/(ae_quintile))

df_mapped_result_2005 = map_mrio_results_to_eu_ntiles(2005, target_eu_ntiles)
df_mapped_result_2005_data = df_mapped_result_2005$df_mapped_data
df_mapped_result_2005_ntiles = df_mapped_result_2005$df_ntile_boundaries

df_mapped_result_2010 = map_mrio_results_to_eu_ntiles(2010, target_eu_ntiles)
df_mapped_result_2010_data = df_mapped_result_2010$df_mapped_data
df_mapped_result_2010_ntiles = df_mapped_result_2010$df_ntile_boundaries

df_mapped_result_data = df_mapped_result_2005_data %>%
  bind_rows(df_mapped_result_2010_data) 

write_csv(df_mapped_result_data, 
          here(paste0("analysis/data/derived/si/mrio_results_eu_ntile_mapped_n_", target_eu_ntiles, "_pxp.csv")))


##### SI results, alternative method, EXOIBASE industry-by-industry version

# 1) load income-stratified-footprints formatted results file
dat_results_raw = read_rds(here("analysis", "preprocessing", "income-stratified-footprints",
                                "results_formatted_method2_ixi.rds")) %>%
  ungroup() %>%
  mutate(year= strtoi(year)) %>%
  rename(iso2 = geo)

# get iso3 country codes to join with hh data
country_codes = ISOcodes::ISO_3166_1 %>%
  select(iso2 = Alpha_2, iso3 = Alpha_3) %>%
  # resolve inconsistency between EUROSTAT and ISO for Greece and UK/Great Britain
  mutate(iso2 = if_else(iso2=="GR", "EL", iso2)) %>%
  mutate(iso2 = if_else(iso2=="GB", "UK", iso2))

# read in total private households data from EUROSTAT and Norway, merge, and write .csv 
## set 4 digits per value
options(digits=4)

## EUROSTAT total private households
total_private_households_Eurostat = read.csv(here("/analysis/preprocessing/income-stratified-footprints/lfst_hhnhtych_1_Data.csv")) %>%
  filter(!(GEO %in% c("European Union - 27 countries (from 2020)",
                    "Euro area - 19 countries  (from 2015)",
                    "European Union - 28 countries (2013-2020)",
                    "European Union - 15 countries (1995-2004)"))) %>%
  mutate(geo = dplyr::recode(GEO,
                             "Belgium" = "BE",
                             "Bulgaria" = "BG",
                             "Czechia" = "CZ",
                             "Denmark" = "DK",
                             "Germany (until 1990 former territory of the FRG)" = "DE",
                             "Estonia" = "EE",
                             "Ireland" = "IE",
                             "Greece" = "EL",
                             "Spain" = "ES",
                             "France" = "FR",
                             "Croatia" = "HR",
                             "Italy" = "IT",
                             "Cyprus" = "CY",
                             "Latvia" = "LV",
                             "Lithuania" = "LT",
                             "Luxembourg" = "LU",
                             "Hungary" = "HU",
                             "Malta" = "MT",
                             "Netherlands" = "NL",
                             "Austria" = "AT",
                             "Poland" = "PL",
                             "Portugal" = "PT",
                             "Romania" = "RO",
                             "Slovenia" = "SI",
                             "Slovakia" = "SK",
                             "Finland" = "FI",
                             "Sweden" = "SE",
                             "United Kingdom" = "UK",
                             "Montenegro" = "ME",
                             "North Macedonia" = "MK",
                             "Serbia" = "RS",
                             "Turkey" = "TR")) %>%
  select(TIME,geo,Value) %>%
  rename(year = TIME, total_private_households = Value) %>%
  mutate(total_private_households = as.character(total_private_households),
         total_private_households = parse_number(total_private_households),
         total_private_households = as.numeric(total_private_households),
         total_private_households = total_private_households*1000)

## Norway total private households
total_private_households_Norway = read.csv(here("/analysis/preprocessing/income-stratified-footprints/Privathusholdninger.csv")) %>%
  gather(year, total_private_households, Private.households.2005:Private.households.2019) %>%
  mutate(geo = dplyr::recode(region,
                             "0 The whole country" = "NO"),
         year = dplyr::recode(year,
                              "Private.households.2005" = 2005,
                              "Private.households.2006" = 2006,
                              "Private.households.2007" = 2007,
                              "Private.households.2008" = 2008,
                              "Private.households.2009" = 2009,
                              "Private.households.2010" = 2010,
                              "Private.households.2011" = 2011,
                              "Private.households.2012" = 2012,
                              "Private.households.2013" = 2013,
                              "Private.households.2014" = 2014,
                              "Private.households.2015" = 2015,
                              "Private.households.2016" = 2016,
                              "Private.households.2017" = 2017,
                              "Private.households.2018" = 2018,
                              "Private.households.2019" = 2019)) %>%
  select(year,geo,total_private_households)

## merge EUROSTAT and Norway total private households data
total_private_households = rbind(total_private_households_Eurostat,
                                 total_private_households_Norway) %>%
  mutate(geo = as.character(geo),
         year = as.numeric(year),
         total_private_households = as.numeric(total_private_households))

## write .csv file with all total private households data
write_csv(total_private_households, here("/analysis/preprocessing/income-stratified-footprints/total_private_households.csv"))
# the original 'total_private_households_original.csv' is in 'income-stratified-footprints-in-europe/data' - if something goes wrong
# with the main paper results (pulling from the mrio results file written later) then the problem is here, when I added 
# the as.character mutation in the total_private_households_Eurostat

## return to 2 digits per value
options(digits=2)

# 2) load EUROSTAT household data
hh_data = read_csv(here("analysis", "preprocessing", "income-stratified-footprints",
                        "total_private_households.csv")) %>%
  mutate(imputed = if_else(is.na(total_private_households), TRUE, FALSE)) %>%
  rename(iso2 = geo) %>%
  group_by(iso2) %>%
  # impute households with next available neighbour
  mutate(hh = na_locf(total_private_households)) %>%
  left_join(country_codes, by="iso2") %>%
  select(-total_private_households)

#3) EUROSTAT mean expenditures per household income quintile per household and per adult equivalent
df_expenditure_long = read_csv(here("analysis", "preprocessing", "income-stratified-footprints",
                                    "mean_expenditure_by_quintile_long.csv"),
                               na = ":") %>%
  #filter(year >=2010, geo != "IT") %>%
  #filter(year >=2005, geo != "IT") %>%
  #decide here
  filter(year >=2005) %>%
  mutate(imputed = if_else(is.na(mean_expenditure), TRUE, FALSE)) %>%
  group_by(geo,unit,quintile) %>%
  mutate(value = na_locf(mean_expenditure)) %>%
  select(-mean_expenditure) %>% 
  ungroup()

## calculate adult equivalents per household
df_adult_e_p_hh = df_expenditure_long %>%
  rename(iso2 = geo) %>%
  pivot_wider(id_cols = c(iso2, year, quintile, imputed), 
              names_from = unit, 
              values_from = value) %>%
  clean_names() %>%
  mutate(adult_e_p_hh = pps_hh/pps_ae) %>%
  left_join(country_codes, by="iso2") %>%
  mutate(iso3 = if_else(iso2 == "XK", "XKX", iso3),
         quint = parse_number(quintile))

## add quintile population data
mrio_results_with_adult_eq_all = dat_results_raw %>%
  filter(year %in% c(2005, 2010, 2015)) %>%
  left_join(hh_data, by=c("iso2", "year")) %>%
  mutate(hh_quintile = hh/5) %>% # population per country quinitle
  select(-hh) %>%
  rename(hh_imputed = imputed) %>%
  left_join(df_adult_e_p_hh %>%
              select(iso2, year, quint, imputed_ae = imputed, adult_e_p_hh), 
            by=c("iso2", "year", "quint")) %>%
  mutate(ae_quintile = hh_quintile * adult_e_p_hh) %>%
  select(-c(hh_quintile, adult_e_p_hh))

## for the European expenditure deciles we use only countries with data in 2005, 2010 and 2015. This excludes Luxembourg and Italy. 
complete_countries = mrio_results_with_adult_eq_all %>%
  group_by(year, iso2) %>%
  summarise(co2_kg = sum(co2_kg)) %>%
  ungroup() %>%
  filter(co2_kg>0) %>%
  select(iso2, year, co2_kg) %>%
  pivot_wider(id_cols = c(iso2), names_from = year, values_from = co2_kg) %>%
  drop_na() %>%
  select(iso2) %>%
  pull()

df_adult_e_p_hh %>%
  filter(iso2 %in% complete_countries, year<=2015, year>=2005) %>%
  mutate(quint = parse_number(quintile))

# calculate European expenditure deciles based on loaded income-stratified-footprints result file and adult equivalents.
# returns country quintiles mapped to European ntile rank and European ntile boundaries
# helper function called by function below
calculate_eu_ntiles <- function(pyear, pquantile_count=10) {
  
  country_data_annual_sorted = summary_country_fd %>%
    ungroup() %>%
    filter(year==pyear) %>%
    arrange(fd_pae_e) %>%
    mutate(idx = 1:n(),
           eu_q_rank = 0) # later to be filled with euro quintile rank
  
  # total European adult equivalents (of included countries) in year
  total_ae_in_year = sum(country_data_annual_sorted$ae_quintile)
  
  # quantile target ae population
  eu_decile_adult_eq = total_ae_in_year/pquantile_count
  
  # country quintiles must be split to allocate ae population according to European quantile target ae population
  # filtering by condition that can't be fulfilled is a lazy way to create an empty dataframe
  # of the same structure as country_data_annual_sorted
  additional_rows = country_data_annual_sorted %>%
    filter(year==1)
  
  # store quantile split values
  eu_quantile_boundaries = data.frame(euro_q_rank = 1:pquantile_count, p = 0)

  ## loops through the ordered dataset, assigns European quantile rank
  ## and splits quintiles where necessary
  eu_ae_current = 0
  euro_q_rank_current = 1
  for (row_idx in 1:nrow(country_data_annual_sorted)) {
    row = country_data_annual_sorted[row_idx,]
    if (row["ae_quintile"] + eu_ae_current <= eu_decile_adult_eq) {
      eu_ae_current = eu_ae_current + row["ae_quintile"]
      country_data_annual_sorted[row_idx, "eu_q_rank"] = euro_q_rank_current
    } else {
      ae_diff = eu_decile_adult_eq - eu_ae_current
      ## write rest of this European decile (split country quintile)
      new_row = country_data_annual_sorted[row_idx, ]
      new_row[1, "eu_q_rank"] = euro_q_rank_current
      new_row[1, "ae_quintile"] = ae_diff
      ## record European quantile boundary
      eu_quantile_boundaries[eu_quantile_boundaries$euro_q_rank==euro_q_rank_current, "p"] =
        country_data_annual_sorted[row_idx, "fd_pae_e"]
      ## put first part of population in overflow dataframe
      additional_rows = additional_rows %>%
        bind_rows(new_row)
      ## classify rest of country quintile population to next European quantile
      country_data_annual_sorted[row_idx, "ae_quintile"] = 
        country_data_annual_sorted[row_idx, "ae_quintile"] - (ae_diff+0.0001)
      euro_q_rank_current = euro_q_rank_current + 1
      country_data_annual_sorted[row_idx, "eu_q_rank"] = euro_q_rank_current
      eu_ae_current = country_data_annual_sorted[row_idx, "ae_quintile"]
      
    }
  }
  
  country_data_eu_quantiles = country_data_annual_sorted %>%
  bind_rows(additional_rows) %>%
  arrange(fd_pae_e, eu_q_rank) %>%
  mutate(idx = 1:n())

  # add zeroth and nth quantile (min and max)
  eu_quantile_boundaries[pquantile_count, "p"] = max(country_data_eu_quantiles$fd_pae_e)
  
  list("df_q_data" = country_data_eu_quantiles, "df_q_boundaries" = eu_quantile_boundaries)
}

# maps income-stratified-footprint results to European ntile ranks, returns mapping and ntile European boundaries
map_mrio_results_to_eu_ntiles <- function(pyear, ptarget_ntiles) {
  
  df_eu_ntiles = calculate_eu_ntiles(pyear, pquantile_count = ptarget_ntiles)
  df_eu_ntiles_data = df_eu_ntiles$df_q_data
  
  sector_mapping = mrio_results_with_adult_eq %>%
    group_by(coicop) %>%#
    summarise(coicop = first(coicop)) %>%
    ungroup()
  
  df_mapped_data = mrio_results_with_adult_eq %>%
    select(year, 
           iso2, 
           quint, 
           coicop, 
           fd_me, 
           co2_kg, 
           co2_domestic_kg, 
           co2_europe_kg,
           co2eq_kg, 
           co2eq_domestic_kg, 
           co2eq_europe_kg,
           energy_use_tj, 
           energy_use_domestic_tj,
           energy_use_europe_tj,
           ae_quintile) %>%
    filter(year==pyear) %>%
    # calculate per adult equivalent values in quintiles
    mutate(fd_pae_e = fd_me*1000000/ae_quintile,
           co2_pae_kg = co2_kg/ae_quintile,
           co2_pae_dom_kg = co2_domestic_kg/ae_quintile,
           co2_pae_eu_kg = co2_europe_kg/ae_quintile,
           co2eq_pae_kg = co2eq_kg/ae_quintile,
           co2eq_pae_dom_kg = co2eq_domestic_kg/ae_quintile,
           co2eq_pae_eu_kg = co2eq_europe_kg/ae_quintile,
           energy_use_pae_tj = energy_use_tj/ae_quintile,
           energy_use_dom_pae_tj = energy_use_domestic_tj/ae_quintile,
           energy_use_eu_pae_tj = energy_use_europe_tj/ae_quintile) %>%
    # remove totals
    select(-c(fd_me, 
              co2_kg,
              co2_domestic_kg,
              co2_europe_kg,
              co2eq_kg,
              co2eq_domestic_kg,
              co2eq_europe_kg,
              energy_use_tj,
              energy_use_domestic_tj,
              energy_use_europe_tj,
              year, ae_quintile)) %>%
    full_join(df_eu_ntiles_data %>%
                rename(fd_pae_e_quint_tmp = fd_pae_e), by=c("iso2", "quint")) %>%
    rename(adult_eq = ae_quintile) %>% # country quintile and their split fraction population
    # recalculate totals
    mutate(fd_me = fd_pae_e*adult_eq/1000000,
           co2_kg = co2_pae_kg*adult_eq,
           co2_dom_kg = co2_pae_dom_kg*adult_eq,
           co2_eu_kg = co2_pae_eu_kg*adult_eq,
           co2eq_kg = co2eq_pae_kg*adult_eq,
           co2eq_dom_kg = co2eq_pae_dom_kg*adult_eq,
           co2eq_eu_kg = co2eq_pae_eu_kg*adult_eq,
           energy_use_tj = energy_use_pae_tj*adult_eq,
           energy_use_dom_tj = energy_use_dom_pae_tj*adult_eq,
           energy_use_eu_tj = energy_use_eu_pae_tj*adult_eq
           ) #%>%
    #left_join(sector_mapping, by="sector_id") # comment out joining sectors (only working with coicop categories in method2)
  
  list("df_mapped_data" = df_mapped_data, "df_ntile_boundaries" = df_eu_ntiles$df_q_boundaries)
  
}

# filter only countries with complete info for years 2005, 2010, 2015
mrio_results_with_adult_eq = mrio_results_with_adult_eq_all %>%
  filter(iso2 %in% complete_countries)

# summarize final demand per adult equivalent per quintile across all sectors as basis for European deciles for complete countries
summary_country_fd = mrio_results_with_adult_eq %>%
  group_by(iso2, year, quint) %>%
  summarise(ae_quintile = first(ae_quintile),
            fd_pae_e = sum(fd_me*1000000, na.rm = T)/(ae_quintile))

# summarize final demand per adult equivalent per quintile across all sectors as basis for European deciles for all countries
summary_country_fd_all = mrio_results_with_adult_eq_all %>%
  group_by(iso2, year, quint) %>%
  summarise(ae_quintile = first(ae_quintile),
            fd_pae_e = sum(fd_me*1000000, na.rm = T)/(ae_quintile))

df_mapped_result_2005 = map_mrio_results_to_eu_ntiles(2005, target_eu_ntiles)
df_mapped_result_2005_data = df_mapped_result_2005$df_mapped_data
df_mapped_result_2005_ntiles = df_mapped_result_2005$df_ntile_boundaries

df_mapped_result_2010 = map_mrio_results_to_eu_ntiles(2010, target_eu_ntiles)
df_mapped_result_2010_data = df_mapped_result_2010$df_mapped_data
df_mapped_result_2010_ntiles = df_mapped_result_2010$df_ntile_boundaries

df_mapped_result_2015 = map_mrio_results_to_eu_ntiles(2015, target_eu_ntiles)
df_mapped_result_2015_data = df_mapped_result_2015$df_mapped_data
df_mapped_result_2015_ntiles = df_mapped_result_2015$df_ntile_boundaries

df_mapped_result_data = df_mapped_result_2005_data %>%
  bind_rows(df_mapped_result_2010_data) %>%
  bind_rows(df_mapped_result_2015_data)

write_csv(df_mapped_result_data, 
          here(paste0("analysis/data/derived/si/mrio_results_eu_ntile_mapped_n_", target_eu_ntiles, "_method2_ixi.csv")))