# Script: filter different markets( just for cake oil market and sugar, cereals...)
#' function reads balance detailed, split it into "biofuels" and "non-biofuels"
#'
#' @param balance_detailed A data frame.
#' @param p_biofuels boolean.
#' @param products products from dimdefs.xml
prelinks <- function(balance_detailed, p_biofuels = TRUE,products){
# balance_detailed =balance_detailed_Baseline
# products information
added <- products %>% dplyr::select(key,itemName,color) %>% as_tibble()
# add variable key, itemName and color from products
balance_detailed <- left_join(balance_detailed, added, by = c(".i4" = "key"))
# balance_detailed <- left_join(balance_detailed, dimdef_product[,c(2,3,9)], by = c(".i4" = "key"))
# rename new variable
colnames(balance_detailed)[13] <- "Commodities"
colnames(balance_detailed)[1] <- "key"
balance_detailed$Commodities <- sub("\\[.*?\\]", "", balance_detailed$Commodities)
library(magrittr)
# prod_list_fullname <- balance_detailed %>% select(Commodities) %>% extract2(1)
# remove character begin with [ and end with ]
# prod_list_fullname <- gsub("\\[.*?\\]", "", prod_list_fullname)
# p_biofuels = T
if (p_biofuels){
selected_list = c("Rape seed",
"Soya seed",
"Sunflower seed",
"Rape seed oil",
"Soya oil",
"Soya cake",
"Sunflowe seed cake",
"Rape seed cake",
"Destilled dried grains from bio-ethanol processing",
"Pulses",
"Bio ethanol")
}else{
selected_list = c("Wheat","Grain maize","Barley", "Other cereals","Poultry meat",
"Sugar", "Fish and other acquatic products", "Rice milled")
}
#
balance_detailed_ <- balance_detailed %>% as.data.frame()
balance_detailed_selected <- filter(balance_detailed_, balance_detailed_[,13] %in% selected_list) %>% as_tibble()
#rename "Destilled dried grains from bio-ethanol processing" -> "DDGS"
# balance_detailed_selected <- balance_detailed_selected %>%
# mutate(Commodities = ifelse(Commodities!="Destilled dried grains from bio-ethanol processing",Commodities,"DDGS"))
# filter
balance_detailed_all <- balance_detailed_selected %>%
select(-.i1) %>% # remove region
select(-.i5) %>% # remove year: 2030
select(-interv_ch) %>%
group_by(Commodities) %>%
summarise_at(vars(supply:exports),sum,na.rm=TRUE)
library(magrittr)
prod_list_fullname <- balance_detailed_selected %>% select(Commodities) %>% extract2(1)
#print(prod_list_fullname)
vars_to_run <- prod_list_fullname
left_side <- c("supply","imports")
links_list <- list()
#nodes_list <- list()
vars_to_run <- vars_to_run[!vars_to_run %in%
c("Soya oil",
"Soya cake",
"Rape seed oil",
"Rape seed cake",
"Sunflowe seed cake",
"Bio ethanol",
"Destilled dried grains from bio-ethanol processing"
)]
# "Rape seed" "Sunflower seed" "Soya seed" "Pulses"
for (i in vars_to_run){
data_df <- reshape2::melt(balance_detailed_all)
data_df_1 <- data_df %>% filter(Commodities == i)
data_df_1_l <- data_df_1 %>% filter(variable %in% left_side )
data_df_1_r <- data_df_1 %>% filter(!variable %in% left_side)
data_df_1_l_agg <- data_df_1_l %>% group_by(Commodities) %>% dplyr::summarise(value=sum(value))
first <- merge(data_df_1_l, data_df_1_l_agg, by="Commodities",all=TRUE)
first <- first[,c("variable.x","variable.y","value.x")]
colnames(first)[3] <- "value"
second <- merge(data_df_1_l_agg,data_df_1_r,by="Commodities",all=TRUE)
second <- second[,c("variable.x","variable.y","value.y")]
colnames(second)[3] <- "value"
if (p_biofuels){
if (i != "Pulses"){
if (i == "Soya seed") {produced = c("Soya oil","Soya cake")}
else if (i == "Rape seed") {produced = c("Rape seed oil","Rape seed cake") }
else if (i == "Sunflower seed") {produced = c("Sunflower seed oil","Sunflowe seed cake") }
else {print(i);break}
data_df_proc_help <- balance_detailed_all %>% filter(Commodities %in% produced)
data_df_proc_help <- reshape2::melt(data_df_proc_help)
data_df_proc_help <- data_df_proc_help %>% filter(variable== "supply" )
data_df_proc_help$variable <- paste(data_df_proc_help$Commodities)
data_df_proc_help$Commodities <- i
colnames(data_df_proc_help) <- c("variable.x","variable.y","value")
second <- rbind(second,data_df_proc_help)
second <- second %>% filter(variable.y!="processing")
data_df_proc_help <- balance_detailed_all %>% filter(Commodities %in% produced)
data_df_proc_help <- reshape2::melt(data_df_proc_help)
data_df_proc_help <- data_df_proc_help %>% filter(variable!="supply")
colnames(data_df_proc_help) <- c("variable.x","variable.y","value")
second <- rbind(second,data_df_proc_help)
second_imports <- second %>% filter(variable.y=="imports")
second <- second %>% filter(!variable.y=="imports")
colnames(second_imports) <- c("variable.y","variable.x","value")
second <- rbind(second,second_imports)
}
}
combined <- rbind(first,second)
links_list[[i]] <- combined
links <- rbindlist(links_list)
links <- unique(links)
}
if(p_biofuels){
# links[grepl("Bio",variable.x) | grepl("Bio",variable.y)]
setnames(links,old=c("variable.x","variable.y"),new=c("source","target"))
# links[grepl("Bio",source) | grepl("Bio",target)]
i <- c("Bio ethanol","Destilled dried grains from bio-ethanol processing")
data_df_proc_help <- balance_detailed_all %>% filter(Commodities %in% i)
data_df_proc_help <- reshape2::melt(data_df_proc_help)
data_df_proc_help <- data_df_proc_help %>% filter(variable=="supply")
data_df_proc_help$variable <- paste(data_df_proc_help$Commodities)
data_df_proc_help$Commodities <- "biofuels"
colnames(data_df_proc_help) <- c("variable.x","variable.y","value")
data_df <- reshape2::melt(balance_detailed_all)
data_df_1 <- data_df[data_df$Commodities %in% i,]
data_df_1_l <- data_df_1[data_df_1$variable %in% left_side,]
data_df_1_l$variable <- as.character(data_df_1_l$variable)
data_df_1_l <- data_df_1_l %>% filter(variable!="supply")
data_df_1_r <- data_df_1[!data_df_1$variable %in% left_side,]
data_df_1_r$variable <- as.character(data_df_1_r$variable)
data_df_1_l_agg <- data_df_1_l%>%group_by(Commodities) %>% dplyr::summarise(value=sum(value))
data_df_1_l_agg$variable <- paste0(i)
first <- merge(data_df_1_l,data_df_1_l_agg,by="Commodities",all=TRUE)
first <- first[,c("variable.x","variable.y","value.x")]
colnames(first)[3] <- "value"
second <- merge(data_df_1_l_agg,data_df_1_r,by="Commodities",all=TRUE)
second <- second[,c("variable.x","variable.y","value.y")]
colnames(second)[3] <- "value"
second <- rbind(second,data_df_proc_help)
second <- second %>% filter(!variable.y %in% c("processing","biofuels"))
#nodes <- rbind(nodes,data.frame("name"=i))
combined <- rbind(first,second)
setnames(combined,old=c("variable.x","variable.y"),new=c("source","target"))