diff --git a/CommonFunctions.R b/CommonFunctions.R index 778a8b74216dd12922fe4152a0ba2b758ac857a8..fe8b45521104d6ba7876ca9007ff82ff080010f4 100644 --- a/CommonFunctions.R +++ b/CommonFunctions.R @@ -1,11 +1,11 @@ require(data.table) require(reshape2) -data_dir_root = "C:\\Users\\rhenry2\\Desktop\\PLUM_orig_data" +data_dir_root = "~/Documents/LURG/Data" fao_data_dir = file.path(data_dir_root, "FAOStat-April2019") getItemDetails = function() { - itemDetails = fread("C:\\Users\\rhenry2\\workspace\\R scripts\\landalloc\\itemsInputs.csv") + itemDetails = fread("~/Documents/R_Workspace/landalloc/itemsInputs.csv") itemDetails[, allowedForVeggie:=TRUE] itemDetails[animal == TRUE & !Item %in% c("Eggs", "Milk - Excluding Butter"), allowedForVeggie:=FALSE] itemDetails @@ -26,7 +26,7 @@ getFeedConvRatio = function(generateRandom=FALSE, lowerB=-0.2, upperB=0.2) { } getCountryCodes = function(includeWorld=TRUE) { - dt = fread("C:\\Users\\rhenry2\\workspace\\PLUM_src\\plumv2\\plumv2\\data\\country_codes4.csv", header=TRUE)[, list(Country, CountryCode, Region, IncomeGroup)] + dt = fread("~/Documents/R_Workspace/UNPLUM/data/country_codes4.csv", header=TRUE)[, list(Country, CountryCode, Region, IncomeGroup)] if (includeWorld == TRUE) dt = rbind(dt, data.table(Country = "World", CountryCode = "WLD", Region = "World", IncomeGroup="variable")) dt } diff --git a/PLUM/SetupData/PreparePLUMData.R b/PLUM/SetupData/PreparePLUMData.R index a6dda678bdd47c1b8f5709bb24df9a9107bb0e7e..4652c3953ca7157631cb0dbbc83819cf4bf5528b 100644 --- a/PLUM/SetupData/PreparePLUMData.R +++ b/PLUM/SetupData/PreparePLUMData.R @@ -1,7 +1,7 @@ require(raster) #write files for java model -output_dir_root = "C:\\Users\\rhenry2\\workspace\\PLUM_src\\plumv2\\plumv2" -#output_dir_root = "/Users/peteralexander/Documents/R_Workspace/UNPLUM" +#output_dir_root = "C:\\Users\\rhenry2\\workspace\\PLUM_src\\plumv2\\plumv2" +output_dir_root = "/Users/peteralexander/Documents/R_Workspace/UNPLUM" # Stock levels calculateStockLevels <- function(stockvar){ @@ -61,11 +61,11 @@ writePlumFiles = function(dt, year, output_dir) { bio = dt$cb_fs[Year == year & !Item %in% itemDetails[animal==TRUE], list(Country, Year, Item, other=other, Item, plumDemandItem)] if (exists("dt$isHindcast") && dt$isHindcast){ - dt = bio[, list(other=0), by=list(Country, Year, Item=plumDemandItem)] ##set to zero for hindcast + bio = bio[, list(other=0), by=list(Country, Year, Item=plumDemandItem)] ##set to zero for hindcast } else { - dt = bio[, list(other=sum(other, na.rm=TRUE)), by=list(Country, Year, Item=plumDemandItem)] + bio = bio[, list(other=sum(other, na.rm=TRUE)), by=list(Country, Year, Item=plumDemandItem)] } - write.table(dt, file.path(output_dir, "bio_demand.csv"), sep=",", row.names=FALSE, quote=FALSE) + write.table(bio, file.path(output_dir, "bio_demand.csv"), sep=",", row.names=FALSE, quote=FALSE) #energy per mass values cals = merge(dt$cb_fs[Year == year],dt$country_data[Year == year, list(Country,population, gdp_pc)], by=c('Country')) diff --git a/PLUM/SetupData/ReadFaoForPlum-notHindcast.R b/PLUM/SetupData/ReadFaoForPlum-notHindcast.R index 7adc3f8ef10512f3829aa26d340a1ed9fc0743b1..e1ccdd43680987643ae87541af31ba29daf03fb2 100644 --- a/PLUM/SetupData/ReadFaoForPlum-notHindcast.R +++ b/PLUM/SetupData/ReadFaoForPlum-notHindcast.R @@ -187,7 +187,7 @@ extractionValues = function(dt, dtProcessed){ # Get commodities produced from processing dt1= merge(dtProcessed[Year==2010,list(prod=sum(prod)),by=c('Country','processed')], dt[Year==2010,list(Country,processed=Item,rawAmountProcessed = processing)], - by=c('Country','processed'), allow.cartesian=TRUE) + by=c('Country','processed')) dt1 = dt1[prod > 0 & rawAmountProcessed > 0] dt1[,extractionRate:=prod/rawAmountProcessed] @@ -201,15 +201,11 @@ extractionValues = function(dt, dtProcessed){ processData = function(minYear=1960, year=2010){ print(paste("Base year is ", year)) - itemMapping = fread("C:\\Users\\rhenry2\\workspace\\R scripts\\landalloc\\itemsProcessingMap.csv") - com_bal = readCommoditiyBalance() food_supply = readFoodSupply() cropProduction = readCropProd() # Original FAO data for commodities of interest cb_fs = merge(com_bal, food_supply, by=c("Country", "Year", "Item"), all.x=TRUE) - cb_fs = rbind(cb_fs,cropProduction[Country %in% cb_fs[,unique(Country)] & Item=='Oil palm fruit',list(Country,Year,Item,supply=0.0, export=0.0,feed=0.0,food=0.0,import=0.0, - waste=0.0,other=0.0,processing=prod,prod,seed=0.0,stockvar=0.0,food_t=0.0,energy_kcal_pc=0.0,protein_g_pc=0.0)]) cb_fs = merge(cb_fs, itemDetails[, list(Item, plumCropItem, plumDemandItem, fcr, dryMatter)], by="Item") @@ -217,20 +213,15 @@ processData = function(minYear=1960, year=2010){ cb_fs_sugar[, c('Item', 'dryMatter', 'fcr', 'plumCropItem', 'plumDemandItem') := list("Sugar crops", dryMatter/2, NA, 'Sugar', 'Sugar')] # find mean of DM from sum cb_fs = rbind(cb_fs[!Item %in% c("Sugar cane", "Sugar beet"), list(Country, Year, Item, supply, export, food, feed, import,other, processing, prod, dryMatter, fcr, energy_kcal_pc, stockvar, plumCropItem, plumDemandItem)], cb_fs_sugar) - cb_fs2 = merge(cb_fs[Item %in% itemMapping$resultant], itemMapping[, list(processed, Item=resultant)], by="Item", all.x=TRUE, allow.cartesian=TRUE) - - extractionRates = extractionValues(cb_fs,cb_fs2) - + itemMapping = fread("~/Documents/R_Workspace/landalloc/itemsProcessingMap.csv") + processedDt = merge(cb_fs[Item %in% itemMapping$resultant], itemMapping[, list(processed, Item=resultant)], by="Item", all.x=TRUE) + extractionRates = extractionValues(cb_fs,processedDt) itemMapping = merge(itemMapping, extractionRates[,list(processed,extractionRate)],by='processed' ) #below converts processed goods into their raw equivalent values i.e. now columns for soybean oil are in soybean equiv. terms cb_fs3=merge(cb_fs,itemMapping[,list(Item=resultant,extractionRate)],by='Item',all=TRUE) - cb_fs3[!is.na(extractionRate),food:=food/extractionRate] - cb_fs3[!is.na(extractionRate),feed:=feed/extractionRate] - cb_fs3[!is.na(extractionRate),import:=import/extractionRate] - cb_fs3[!is.na(extractionRate),export:=export/extractionRate] - cb_fs3[!is.na(extractionRate),other:=other/extractionRate] - cb_fs3[!is.na(extractionRate),stockvar:=stockvar/extractionRate] + colsToAdj = c("supply", "export", "food", "feed", "import", "other", "processing", "stockvar", "dryMatter") + cb_fs3[!is.na(extractionRate), (colsToAdj) := lapply(.SD, function(x) x/extractionRate), by=list(Country, Year, Item), .SDcols=colsToAdj] cb_fs3[, net_import := import-export] #want to zero production of processed final goods as their production comes from the production of the raw good anyway @@ -245,9 +236,6 @@ processData = function(minYear=1960, year=2010){ return(list(ssp=ssp,histDt=histDt, baseConsumption=baseConsumption, com_curves=com_curves, country_data=country_data, projectedConsumption=projectedConsumption, cb_fs=cb_fs3, livestockNumbers=livestockNumbers)) - - - } processedFull = processData() diff --git a/itemsInputs.csv b/itemsInputs.csv index c207c14287a1cb9357a912e360ddbe8e13225087..d093550528744e0906efc8b68bf9f0abcd64f8b0 100644 --- a/itemsInputs.csv +++ b/itemsInputs.csv @@ -39,8 +39,7 @@ Molasses,FALSE,FALSE,0.73,Sugar and sweeteners,Sugar,,Sugar Mutton & Goat Meat,FALSE,TRUE,0.405,Meat,Ruminants,15,Ruminants Nuts,TRUE,FALSE,0.9,Oilseeds and pulses,Oilcrops,,OilcropsPulses Oats,TRUE,FALSE,0.879,Cereals,WheatBarleyOats,,Cereals -Oil palm fruit,TRUE,FALSE,0.34,Oilseeds and pulses,Oilcrops,,OilcropsPulses -Palm Oil,FALSE,FALSE,1,Oilseeds and pulses,Oilcrops,,OilcropsPulses +Palm Oil,TRUE,FALSE,1,Oilseeds and pulses,Oilcrops,,OilcropsPulses Oilcrops Oil Other,FALSE,FALSE,1,Oilseeds and pulses,Oilcrops,,OilcropsPulses Oilcrops Other,TRUE,FALSE,0.88,Oilseeds and pulses,Oilcrops,,OilcropsPulses Oilseed Cakes Other,FALSE,FALSE,0.9,Oilseeds and pulses,Oilcrops,,OilcropsPulses diff --git a/itemsProcessingMap.csv b/itemsProcessingMap.csv index 99337ac10331790c5ce6101b40ea14ab2047659e..7ba004954efd4982b0d0de0f3d92f5a227f90d2f 100644 --- a/itemsProcessingMap.csv +++ b/itemsProcessingMap.csv @@ -13,10 +13,8 @@ Maize,Sweeteners Other,2 Oilcrops Other,Oilcrops Oil Other,1 Oilcrops Other,Oilseed Cakes Other,3 Olives (including preserved),Olive Oil,1 -Oil palm fruit,Palm Oil,3 -Oil palm fruit,Palm kernels,3 -Oil palm fruit,Palmkernel Cake,1 -Oil palm fruit,Palmkernel Oil,3 +Palm kernels,Palmkernel Oil,3 +Palm kernels,Palmkernel Cake,1 Potatoes,Beverages Fermented,1 Rape and Mustardseed,Rape and Mustard Cake,1 Rape and Mustardseed,Rape and Mustard Oil,3