From 7652dd95aaba6017718af61ffdae26089114b3cf Mon Sep 17 00:00:00 2001 From: Benjamin Blanz <rganb@gmx.de> Date: Tue, 20 Aug 2024 16:21:29 +0200 Subject: [PATCH] Added GRACE sector mapping --- scenarioProcessing/a1ProcessScenarioData.R | 1 + scenarioProcessing/funAggregateNuts2CNT.R | 2 +- scenarioProcessing/funRelData.R | 2 +- .../helperData/GTAP_NACE_sector_mapping.xlsx | Bin 12966 -> 12971 bytes scenarioProcessing/relativizeShocks.R | 9 +++- scenarioProcessing/sectorMappingNACE2GRACE.R | 46 ++++++++++++++++++ scenarioProcessing/sectorMappingNACE2GTAP.R | 44 +++++++++++++++++ scenarioProcessing/stockAggregation.R | 2 +- 8 files changed, 101 insertions(+), 5 deletions(-) create mode 100644 scenarioProcessing/sectorMappingNACE2GRACE.R create mode 100644 scenarioProcessing/sectorMappingNACE2GTAP.R diff --git a/scenarioProcessing/a1ProcessScenarioData.R b/scenarioProcessing/a1ProcessScenarioData.R index 928275c..f1ca398 100644 --- a/scenarioProcessing/a1ProcessScenarioData.R +++ b/scenarioProcessing/a1ProcessScenarioData.R @@ -6,5 +6,6 @@ source('stockAggregation.R') source('sectorMappingNACE2GTAP.R') +source('sectorMappingNACE2GRACE.R') source('aggregateShocks.R') source('relativizeShocks.R') diff --git a/scenarioProcessing/funAggregateNuts2CNT.R b/scenarioProcessing/funAggregateNuts2CNT.R index da9f1ee..4e6f158 100644 --- a/scenarioProcessing/funAggregateNuts2CNT.R +++ b/scenarioProcessing/funAggregateNuts2CNT.R @@ -9,7 +9,7 @@ # aggregated data # aggregateNUTS3ToCountry <- function(data,codes){ - sectorColPattern <- 'ALL|TOTAL|^[A-Z]$|AGR|MIN|MFG|EGW|CNS|TRD|OTP|WTP|CMN|OFI|OBS|REA|PUB|OSG' + sectorColPattern <- 'ALL|TOTAL|^[A-Z]$|AGR|MIN|MFG|EGW|CNS|TRD|OTP|WTP|CMN|OFI|OBS|REA|PUB|OSG|agr|coa.oil.gas|pro|ely.elc|ser|air.wtp.tran' # identify columns with data rather than identifiers sectorCols <- grep(sectorColPattern,names(data),perl = T) # convert data to numeric (deals with in import error) diff --git a/scenarioProcessing/funRelData.R b/scenarioProcessing/funRelData.R index 981c275..2e4fad7 100644 --- a/scenarioProcessing/funRelData.R +++ b/scenarioProcessing/funRelData.R @@ -17,7 +17,7 @@ # Benjamin Blanz 2024 # relData <- function(data,stocksNUTS3=NULL,stocksCNT=NULL){ - sectorColPattern <- 'ALL|TOTAL|^[A-Z]$|AGR|MIN|MFG|EGW|CNS|TRD|OTP|WTP|CMN|OFI|OBS|REA|PUB|OSG' + sectorColPattern <- 'ALL|TOTAL|^[A-Z]$|AGR|MIN|MFG|EGW|CNS|TRD|OTP|WTP|CMN|OFI|OBS|REA|PUB|OSG|agr|coa.oil.gas|pro|ely.elc|ser|air.wtp.tran' # Ensure the Total clumn is called TOTAL, not ALL as in some scenarios names(data)[names(data)=='ALL'] <- 'TOTAL' names(stocksNUTS3)[names(stocksNUTS3)=='ALL'] <- 'TOTAL' diff --git a/scenarioProcessing/helperData/GTAP_NACE_sector_mapping.xlsx b/scenarioProcessing/helperData/GTAP_NACE_sector_mapping.xlsx index d2160144f58b37fd0c309d8698b79a23b824b104..4ffdf2403eb2202ca5d820a8682e26c7ae092fbc 100644 GIT binary patch delta 4427 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 G&;S6ui@o9i delta 4342 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 diff --git a/scenarioProcessing/relativizeShocks.R b/scenarioProcessing/relativizeShocks.R index e012ebd..d587eed 100644 --- a/scenarioProcessing/relativizeShocks.R +++ b/scenarioProcessing/relativizeShocks.R @@ -8,9 +8,11 @@ source('funRelData.R') nuts3LevelStocksNACE <- read.csv("helperData/nuts3LevelStocksNACE.csv", row.names=NULL) -nuts3LevelStocksGTAP <- read.csv("helperData/nuts3LevelStocksGTAP.csv", row.names=NULL) countryLevelStocksNACE <- read.csv("helperData/countryLevelStocksNACE.csv", row.names=NULL) +nuts3LevelStocksGTAP <- read.csv("helperData/nuts3LevelStocksGTAP.csv", row.names=NULL) countryLevelStocksGTAP <- read.csv("helperData/countryLevelStocksGTAP.csv", row.names=NULL) +nuts3LevelStocksGRACE <- read.csv("helperData/nuts3LevelStocksGRACE.csv", row.names=NULL) +countryLevelStocksGRACE <- read.csv("helperData/countryLevelStocksGRACE.csv", row.names=NULL) files <- list.files('scenarios',pattern = 'csv',recursive = T) @@ -23,7 +25,10 @@ for(f.i in 1:length(files)){ if(grepl('GTAP',file)){ data.rel <- relData(data,nuts3LevelStocksGTAP,countryLevelStocksGTAP) write.csv(data.rel,gsub('.csv','-rel.csv',file),row.names = F) - }else{ + } else if (grepl('GRACE',file)) { + data.rel <- relData(data,nuts3LevelStocksGRACE,countryLevelStocksGRACE) + write.csv(data.rel,gsub('.csv','-rel.csv',file),row.names = F) + } else { data.rel <- relData(data,nuts3LevelStocksNACE,countryLevelStocksNACE) write.csv(data.rel,gsub('.csv','-rel.csv',file),row.names = F) } diff --git a/scenarioProcessing/sectorMappingNACE2GRACE.R b/scenarioProcessing/sectorMappingNACE2GRACE.R new file mode 100644 index 0000000..dc4b022 --- /dev/null +++ b/scenarioProcessing/sectorMappingNACE2GRACE.R @@ -0,0 +1,46 @@ +# +# This script will map the NACE sectorsin the original +# secnarios to the GRACE sectors. +# Uses the mapping provided by Lin Ma. +# +# Benjamin Blanz 2024 +# + +library(readxl) +sector_mapping <- read_excel("helperData/GTAP_NACE_sector_mapping.xlsx") +sectorColPattern <- 'ALL|TOTAL|^[A-Z]$|AGR|MIN|MFG|EGW|CNS|TRD|OTP|WTP|CMN|OFI|OBS|REA|PUB|OSG|agr|coa.oil.gas|pro|ely.elc|ser|air.wtp.tran' + +# NACE files for which we will map the sectors to GRACE +files <- list.files('scenarios',pattern = 'NACE.csv',recursive = T) +files <- paste0('scenarios/',files) +files[length(files)+1] <- 'helperData/countryLevelStocksNACE.csv' +files[length(files)+1] <- 'helperData/nuts3LevelStocksNACE.csv' + +# Mapping of sectors +for (file in files){ + cat(sprintf('GRACEifying %s...',file)) + data <- read.csv(file) + names(data)[names(data)=='ALL'] <- 'TOTAL' + dataCols <- grep(sectorColPattern,names(data),perl = T) + for( i in dataCols){ + data[,i] <- suppressWarnings(as.numeric(data[,i])) + } + data[is.na(data)] <- 0 + dataGRACE <- data + dataGRACE[,dataCols] <- NULL + GRACEcodes <- unique(sector_mapping$`GRACE Code`) + for(GRACEcode in GRACEcodes){ + dataGRACE[[GRACEcode]] <- NA + rows <- which(sector_mapping$`GRACE Code` == GRACEcode) + NACEcodes <- strsplit(paste(sector_mapping$`NACE Code`[rows],collapse = '.'),'\\.')[[1]] + if(sum(NACEcodes %in% colnames(data))==length(NACEcodes)){ + if(length(NACEcodes)>1){ + dataGRACE[[GRACEcode]] <- rowSums(data[,NACEcodes]) + } else { + dataGRACE[[GRACEcode]] <- data[,NACEcodes] + } + } + } + write.csv(dataGRACE,gsub('NACE.csv','GRACE.csv',file),row.names = F) + cat('done\n') +} diff --git a/scenarioProcessing/sectorMappingNACE2GTAP.R b/scenarioProcessing/sectorMappingNACE2GTAP.R new file mode 100644 index 0000000..b8c24a2 --- /dev/null +++ b/scenarioProcessing/sectorMappingNACE2GTAP.R @@ -0,0 +1,44 @@ +# +# This script will map the NACE sectors in the original secnarios to the GTAP sectors. +# Uses the mapping provided by Lin Ma. +# +# Benjamin Blanz 2024 +# + +library(readxl) +GTAP_NACE_sector_mapping <- read_excel("helperData/GTAP_NACE_sector_mapping.xlsx") + +# files for which we will map the sectors to GTAP +files <- list.files('scenarios',pattern = 'NACE.csv',recursive = T) +files <- paste0('scenarios/',files) +files[length(files)+1] <- 'helperData/countryLevelStocksNACE.csv' +files[length(files)+1] <- 'helperData/nuts3LevelStocksNACE.csv' + +# Mapping of sectors +for (file in files){ + cat(sprintf('GTAPifying %s...',file)) + data <- read.csv(file) + names(data)[names(data)=='ALL'] <- 'TOTAL' + dataCols <- grep('ALL|TOTAL|^[A-Z]$',names(data),perl = T) + for( i in dataCols){ + data[,i] <- suppressWarnings(as.numeric(data[,i])) + } + data[is.na(data)] <- 0 + dataGTAP <- data + dataGTAP[,dataCols] <- NULL + for( GTAPcode.i in 1:nrow(GTAP_NACE_sector_mapping)){ + dataGTAP[[GTAP_NACE_sector_mapping$`GTAP Code`[GTAPcode.i]]] <- NA + NACEcode <- GTAP_NACE_sector_mapping$`NACE Code`[GTAPcode.i] + NACEcodes <- strsplit(NACEcode,'\\.')[[1]] + if(sum(NACEcodes %in% colnames(data))==length(NACEcodes)) + if(length(NACEcodes)>1){ + dataGTAP[[GTAP_NACE_sector_mapping$`GTAP Code`[GTAPcode.i]]] <- + rowSums(data[,NACEcodes]) + } else { + dataGTAP[[GTAP_NACE_sector_mapping$`GTAP Code`[GTAPcode.i]]] <- + data[,NACEcodes] + } + } + write.csv(dataGTAP,gsub('NACE.csv','GTAP.csv',file),row.names = F) + cat('done\n') +} diff --git a/scenarioProcessing/stockAggregation.R b/scenarioProcessing/stockAggregation.R index 37e4a4e..5d17b7b 100644 --- a/scenarioProcessing/stockAggregation.R +++ b/scenarioProcessing/stockAggregation.R @@ -7,7 +7,7 @@ # Benjamin Blanz 2024 # -sectorColPattern <- 'ALL|TOTAL|^[A-Z]$|AGR|MIN|MFG|EGW|CNS|TRD|OTP|WTP|CMN|OFI|OBS|REA|PUB|OSG' +sectorColPattern <- 'ALL|TOTAL|^[A-Z]$|AGR|MIN|MFG|EGW|CNS|TRD|OTP|WTP|CMN|OFI|OBS|REA|PUB|OSG|agr|coa-oil-gas|pro|ely-elc|ser|air-wtp-tran' # read scenario file with NUTS3 data #### library(readxl) -- GitLab