#1.LIBRARIES (PACKAGES "R") ===================================================================================================
  library(openxlsx)
  library(reshape2)
  library(stringr)
  library(plyr)

#2.PROCESSING DATABASE FILE "CROPS" - NO_HUMIDITY - EUROSTAT ================================================================================================  
  #Data import and transpose data by year - Variable AREA
  ELENCO_sheets <- c("Sheet 3", "Sheet 4", "Sheet 5", "Sheet 6", "Sheet 7", "Sheet 8", "Sheet 9",
                     "Sheet 10", "Sheet 11", "Sheet 12", "Sheet 13", "Sheet 14", "Sheet 15", "Sheet 16", "Sheet 17", 
                     "Sheet 18", "Sheet 19", "Sheet 20", "Sheet 21", "Sheet 22", "Sheet 23", "Sheet 24", "Sheet 25", 
                     "Sheet 26", "Sheet 27", "Sheet 28", "Sheet 29", "Sheet 30", "Sheet 31", "Sheet 32", "Sheet 33", 
                     "Sheet 34", "Sheet 35", "Sheet 36", "Sheet 37", "Sheet 38", "Sheet 39", "Sheet 40", "Sheet 41", 
                     "Sheet 42", "Sheet 43", "Sheet 44", "Sheet 45", "Sheet 46", "Sheet 47", "Sheet 48", "Sheet 49",
                     "Sheet 50", "Sheet 51", "Sheet 52", "Sheet 53", "Sheet 54", "Sheet 55", "Sheet 56", "Sheet 57",
                     "Sheet 58", "Sheet 59", "Sheet 60", "Sheet 61", "Sheet 62", "Sheet 63", "Sheet 64", "Sheet 65",
                     "Sheet 66", "Sheet 67", "Sheet 68", "Sheet 69", "Sheet 70", "Sheet 71", "Sheet 72", "Sheet 73",
                     "Sheet 74", "Sheet 75", "Sheet 76", "Sheet 77", "Sheet 78", "Sheet 79")
  length(ELENCO_sheets)
  ELENCO_colonne <- seq(3,19,2)
  
  setwd("C:\\Users\\................\\data folder")
  DB_SUPERFICI_final <- data.frame()
  
  for (i in 1:length(ELENCO_sheets)){
       print(paste(ELENCO_sheets[i], " - Caricamento del foglio ", i, " di 77 fogli", sep = ""))
       n_sheet <- ELENCO_sheets[i]
       coltura <- colnames(read.xlsx(xlsxFile = "SUP_apro_cpshr__custom_4606765_spreadsheet.xlsx", sheet = n_sheet, rows = 6, cols = 3))  
       coltura <- gsub(".", " ", coltura, fixed = TRUE)
       table <- read.xlsx(xlsxFile = "SUP_apro_cpshr__custom_4606765_spreadsheet.xlsx", sheet = n_sheet, 
                          rows = c(10:647), cols = c(1:20))
       colnames(table)[1:20] <- c("GEO_CODE", "GEO_TABLES", "a_2013", "flag_13", "a_2014", "flag_14", "a_2015", "flag_15",
                                  "a_2016", "flag_16", "a_2017", "flag_17", "a_2018", "flag_18", "a_2019", "flag_19",
                                  "a_2020", "flag_20", "a_2021", "flag_21")
       
       #2013
       temp_1a <- table[,c(1:3)]
       temp_1a <- melt(temp_1a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_1b <- table[,c(1,2,4)]
       temp_1b <- melt(temp_1b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_1 <- data.frame(temp_1a, flag = temp_1b[,4])
       remove(temp_1a, temp_1b)
       #2014
       temp_2a <- table[,c(1,2,5)]
       temp_2a <- melt(temp_2a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_2b <- table[,c(1,2,6)]
       temp_2b <- melt(temp_2b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_2 <- data.frame(temp_2a, flag = temp_2b[,4])
       remove(temp_2a, temp_2b)
       #2015
       temp_3a <- table[,c(1,2,7)]
       temp_3a <- melt(temp_3a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_3b <- table[,c(1,2,8)]
       temp_3b <- melt(temp_3b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_3 <- data.frame(temp_3a, flag = temp_3b[,4])
       remove(temp_3a, temp_3b)
       #2016
       temp_4a <- table[,c(1,2,9)]
       temp_4a <- melt(temp_4a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_4b <- table[,c(1,2,10)]
       temp_4b <- melt(temp_4b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_4 <- data.frame(temp_4a, flag = temp_4b[,4])
       remove(temp_4a, temp_4b)
       #2017
       temp_5a <- table[,c(1,2,11)]
       temp_5a <- melt(temp_5a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_5b <- table[,c(1,2,12)]
       temp_5b <- melt(temp_5b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_5 <- data.frame(temp_5a, flag = temp_5b[,4])
       remove(temp_5a, temp_5b)
       #2018
       temp_6a <- table[,c(1,2,13)]
       temp_6a <- melt(temp_6a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_6b <- table[,c(1,2,14)]
       temp_6b <- melt(temp_6b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_6 <- data.frame(temp_6a, flag = temp_6b[,4])
       remove(temp_6a, temp_6b)
       #2019
       temp_7a <- table[,c(1,2,15)]
       temp_7a <- melt(temp_7a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_7b <- table[,c(1,2,16)]
       temp_7b <- melt(temp_7b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_7 <- data.frame(temp_7a, flag = temp_7b[,4])
       remove(temp_7a, temp_7b)
       #2020
       temp_8a <- table[,c(1,2,17)]
       temp_8a <- melt(temp_8a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_8b <- table[,c(1,2,18)]
       temp_8b <- melt(temp_8b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_8 <- data.frame(temp_8a, flag = temp_8b[,4])
       remove(temp_8a, temp_8b)
       #2021
       temp_9a <- table[,c(1,2,19)]
       temp_9a <- melt(temp_9a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_9b <- table[,c(1,2,20)]
       temp_9b <- melt(temp_9b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_9 <- data.frame(temp_9a, flag = temp_9b[,4])
       remove(temp_9a, temp_9b)
       
       TEMP <- rbind(temp_1, temp_2, temp_3, temp_4, temp_5, temp_6, temp_7, temp_8, temp_9)
       TEMP$Coltura <- coltura
       DB_SUPERFICI_final <- rbind(DB_SUPERFICI_final, TEMP)}

       remove(i, table, coltura, n_sheet, TEMP, temp_1, temp_2, temp_3, temp_4, temp_5, temp_6, temp_7, temp_8, temp_9)
       remove(ELENCO_sheets, ELENCO_colonne)    
 
  colnames(DB_SUPERFICI_final)[3:6] <- c("ANNO", "SUPERFICIE", "FLAG_SUP", "COLTURA")
  DB_SUPERFICI_final$ANNO <- gsub("a_", "", DB_SUPERFICI_final$ANNO)
  DB_SUPERFICI_final <- DB_SUPERFICI_final[,c(3,1,2,6,4,5)]
  DB_SUPERFICI_final$SUPERFICIE_NUM <- as.numeric(DB_SUPERFICI_final$SUPERFICIE)
  
  DB_SUPERFICI_final$CODICE_COLTURA <- ""
  for (i in 1:nrow(DB_SUPERFICI_final)){
       word.list <- str_split(DB_SUPERFICI_final$COLTURA[i], "\\s+")
       words     <- unlist(word.list)
       cod_colt  <- words[length(words)] 
       DB_SUPERFICI_final$CODICE_COLTURA[i] <- cod_colt
       print(i)}
       remove(i, word.list, words, cod_colt)
  
  #Data import and transpose data by year - Variable PRODUCTION      
  ELENCO_sheets <- c("Sheet 3", "Sheet 4", "Sheet 5", "Sheet 6", "Sheet 7", "Sheet 8", "Sheet 9",
                     "Sheet 10", "Sheet 11", "Sheet 12", "Sheet 13", "Sheet 14", "Sheet 15", "Sheet 16", "Sheet 17", 
                     "Sheet 18", "Sheet 19", "Sheet 20", "Sheet 21", "Sheet 22", "Sheet 23", "Sheet 24", "Sheet 25", 
                     "Sheet 26", "Sheet 27", "Sheet 28", "Sheet 29", "Sheet 30", "Sheet 31", "Sheet 32", "Sheet 33", 
                     "Sheet 34", "Sheet 35", "Sheet 36", "Sheet 37", "Sheet 38", "Sheet 39", "Sheet 40", "Sheet 41", 
                     "Sheet 42", "Sheet 43", "Sheet 44", "Sheet 45", "Sheet 46", "Sheet 47", "Sheet 48", "Sheet 49",
                     "Sheet 50", "Sheet 51", "Sheet 52", "Sheet 53", "Sheet 54", "Sheet 55", "Sheet 56", "Sheet 57",
                     "Sheet 58", "Sheet 59", "Sheet 60", "Sheet 61", "Sheet 62", "Sheet 63", "Sheet 64", "Sheet 65",
                     "Sheet 66", "Sheet 67", "Sheet 68", "Sheet 69", "Sheet 70", "Sheet 71", "Sheet 72", "Sheet 73",
                     "Sheet 74", "Sheet 75", "Sheet 76", "Sheet 77", "Sheet 78", "Sheet 79")
  length(ELENCO_sheets)
  ELENCO_colonne <- seq(3,19,2)
   
  setwd("C:\\Users\\\\................\\data folder")
  DB_PRODUZIONI_final <- data.frame()
       
  for (i in 1:length(ELENCO_sheets)){
       print(paste(ELENCO_sheets[i], " - Caricamento del foglio ", i, " di 77 fogli", sep = ""))
       n_sheet <- ELENCO_sheets[i]
       coltura <- colnames(read.xlsx(xlsxFile = "PROD_apro_cpshr__custom_4606814_spreadsheet.xlsx", sheet = n_sheet, rows = 6, cols = 3))  
       coltura <- gsub(".", " ", coltura, fixed = TRUE)
       table <- read.xlsx(xlsxFile = "PROD_apro_cpshr__custom_4606814_spreadsheet.xlsx", sheet = n_sheet, 
                          rows = c(10:647), cols = c(1:20))
       colnames(table)[1:20] <- c("GEO_CODE", "GEO_TABLES", "a_2013", "flag_13", "a_2014", "flag_14", "a_2015", "flag_15",
                                  "a_2016", "flag_16", "a_2017", "flag_17", "a_2018", "flag_18", "a_2019", "flag_19",
                                  "a_2020", "flag_20", "a_2021", "flag_21")
       
       #2013
       temp_1a <- table[,c(1:3)]
       temp_1a <- melt(temp_1a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_1b <- table[,c(1,2,4)]
       temp_1b <- melt(temp_1b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_1 <- data.frame(temp_1a, flag = temp_1b[,4])
       remove(temp_1a, temp_1b)
       #2014
       temp_2a <- table[,c(1,2,5)]
       temp_2a <- melt(temp_2a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_2b <- table[,c(1,2,6)]
       temp_2b <- melt(temp_2b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_2 <- data.frame(temp_2a, flag = temp_2b[,4])
       remove(temp_2a, temp_2b)
       #2015
       temp_3a <- table[,c(1,2,7)]
       temp_3a <- melt(temp_3a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_3b <- table[,c(1,2,8)]
       temp_3b <- melt(temp_3b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_3 <- data.frame(temp_3a, flag = temp_3b[,4])
       remove(temp_3a, temp_3b)
       #2016
       temp_4a <- table[,c(1,2,9)]
       temp_4a <- melt(temp_4a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_4b <- table[,c(1,2,10)]
       temp_4b <- melt(temp_4b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_4 <- data.frame(temp_4a, flag = temp_4b[,4])
       remove(temp_4a, temp_4b)
       #2017
       temp_5a <- table[,c(1,2,11)]
       temp_5a <- melt(temp_5a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_5b <- table[,c(1,2,12)]
       temp_5b <- melt(temp_5b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_5 <- data.frame(temp_5a, flag = temp_5b[,4])
       remove(temp_5a, temp_5b)
       #2018
       temp_6a <- table[,c(1,2,13)]
       temp_6a <- melt(temp_6a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_6b <- table[,c(1,2,14)]
       temp_6b <- melt(temp_6b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_6 <- data.frame(temp_6a, flag = temp_6b[,4])
       remove(temp_6a, temp_6b)
       #2019
       temp_7a <- table[,c(1,2,15)]
       temp_7a <- melt(temp_7a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_7b <- table[,c(1,2,16)]
       temp_7b <- melt(temp_7b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_7 <- data.frame(temp_7a, flag = temp_7b[,4])
       remove(temp_7a, temp_7b)
       #2020
       temp_8a <- table[,c(1,2,17)]
       temp_8a <- melt(temp_8a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_8b <- table[,c(1,2,18)]
       temp_8b <- melt(temp_8b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_8 <- data.frame(temp_8a, flag = temp_8b[,4])
       remove(temp_8a, temp_8b)
       #2021
       temp_9a <- table[,c(1,2,19)]
       temp_9a <- melt(temp_9a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_9b <- table[,c(1,2,20)]
       temp_9b <- melt(temp_9b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_9 <- data.frame(temp_9a, flag = temp_9b[,4])
       remove(temp_9a, temp_9b)
       
       TEMP <- rbind(temp_1, temp_2, temp_3, temp_4, temp_5, temp_6, temp_7, temp_8, temp_9)
       TEMP$Coltura <- coltura
       DB_PRODUZIONI_final <- rbind(DB_PRODUZIONI_final, TEMP)}
  
  remove(i, table, coltura, n_sheet, TEMP, temp_1, temp_2, temp_3, temp_4, temp_5, temp_6, temp_7, temp_8, temp_9)
  remove(ELENCO_sheets, ELENCO_colonne)
   
  colnames(DB_PRODUZIONI_final)[3:6] <- c("ANNO", "PRODUZIONE", "FLAG_PROD", "COLTURA")
  DB_PRODUZIONI_final$ANNO <- gsub("a_", "", DB_PRODUZIONI_final$ANNO)
  DB_PRODUZIONI_final <- DB_PRODUZIONI_final[,c(3,1,2,6,4,5)]
  DB_PRODUZIONI_final$PRODUZIONE_NUM <- as.numeric(DB_PRODUZIONI_final$PRODUZIONE)
  
  DB_PRODUZIONI_final$CODICE_COLTURA <- ""
  for (i in 1:nrow(DB_PRODUZIONI_final)){
       word.list <- str_split(DB_PRODUZIONI_final$COLTURA[i], "\\s+")
       words     <- unlist(word.list)
       cod_colt  <- words[length(words)] 
       DB_PRODUZIONI_final$CODICE_COLTURA[i] <- cod_colt
       print(i)}
       remove(i, word.list, words, cod_colt)

  #Data import and transpose data by year - Variable UTILISED AGRICULTURAL AREA (UAA)     
  ELENCO_sheets <- c("Sheet 1")
      
  setwd("C:\\Users\\................\\data folder")
  
  DB_SAU_final <- data.frame()
  for (i in 1:length(ELENCO_sheets)){
       print(paste(ELENCO_sheets[i], " - Caricamento del foglio ", i, " di 77 fogli", sep = ""))
       n_sheet <- ELENCO_sheets[i]
       coltura <- colnames(read.xlsx(xlsxFile = "SAU_apro_cpshr__custom_4606845_spreadsheet.xlsx", sheet = n_sheet, rows = 6, cols = 3))  
       coltura <- gsub(".", " ", coltura, fixed = TRUE)
       table <- read.xlsx(xlsxFile = "SAU_apro_cpshr__custom_4606845_spreadsheet.xlsx", sheet = n_sheet, 
                          rows = c(10:647), cols = c(1:20))
       colnames(table)[1:20] <- c("GEO_CODE", "GEO_TABLES", "a_2013", "flag_13", "a_2014", "flag_14", "a_2015", "flag_15",
                                  "a_2016", "flag_16", "a_2017", "flag_17", "a_2018", "flag_18", "a_2019", "flag_19",
                                  "a_2020", "flag_20", "a_2021", "flag_21")
     
       #2013
       temp_1a <- table[,c(1:3)]
       temp_1a <- melt(temp_1a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_1b <- table[,c(1,2,4)]
       temp_1b <- melt(temp_1b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_1 <- data.frame(temp_1a, flag = temp_1b[,4])
       remove(temp_1a, temp_1b)
       #2014
       temp_2a <- table[,c(1,2,5)]
       temp_2a <- melt(temp_2a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_2b <- table[,c(1,2,6)]
       temp_2b <- melt(temp_2b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_2 <- data.frame(temp_2a, flag = temp_2b[,4])
       remove(temp_2a, temp_2b)
       #2015
       temp_3a <- table[,c(1,2,7)]
       temp_3a <- melt(temp_3a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_3b <- table[,c(1,2,8)]
       temp_3b <- melt(temp_3b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_3 <- data.frame(temp_3a, flag = temp_3b[,4])
       remove(temp_3a, temp_3b)
       #2016
       temp_4a <- table[,c(1,2,9)]
       temp_4a <- melt(temp_4a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_4b <- table[,c(1,2,10)]
       temp_4b <- melt(temp_4b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_4 <- data.frame(temp_4a, flag = temp_4b[,4])
       remove(temp_4a, temp_4b)
       #2017
       temp_5a <- table[,c(1,2,11)]
       temp_5a <- melt(temp_5a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_5b <- table[,c(1,2,12)]
       temp_5b <- melt(temp_5b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_5 <- data.frame(temp_5a, flag = temp_5b[,4])
      remove(temp_5a, temp_5b)
       #2018
       temp_6a <- table[,c(1,2,13)]
       temp_6a <- melt(temp_6a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_6b <- table[,c(1,2,14)]
       temp_6b <- melt(temp_6b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_6 <- data.frame(temp_6a, flag = temp_6b[,4])
       remove(temp_6a, temp_6b)
       #2019
       temp_7a <- table[,c(1,2,15)]
       temp_7a <- melt(temp_7a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_7b <- table[,c(1,2,16)]
       temp_7b <- melt(temp_7b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_7 <- data.frame(temp_7a, flag = temp_7b[,4])
       remove(temp_7a, temp_7b)
       #2020
       temp_8a <- table[,c(1,2,17)]
       temp_8a <- melt(temp_8a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_8b <- table[,c(1,2,18)]
       temp_8b <- melt(temp_8b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_8 <- data.frame(temp_8a, flag = temp_8b[,4])
     remove(temp_8a, temp_8b)
       #2021
       temp_9a <- table[,c(1,2,19)]
       temp_9a <- melt(temp_9a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_9b <- table[,c(1,2,20)]
       temp_9b <- melt(temp_9b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_9 <- data.frame(temp_9a, flag = temp_9b[,4])
       remove(temp_9a, temp_9b)
     
  TEMP <- rbind(temp_1, temp_2, temp_3, temp_4, temp_5, temp_6, temp_7, temp_8, temp_9)
  TEMP$Coltura <- coltura
  DB_SAU_final <- rbind(DB_SAU_final, TEMP)}
  remove(i, table, coltura, n_sheet, TEMP, temp_1, temp_2, temp_3, temp_4, temp_5, temp_6, temp_7, temp_8, temp_9)
  remove(ELENCO_sheets)
     
  colnames(DB_SAU_final)[3:6] <- c("ANNO", "SAU", "FLAG_SAU", "COLTURA")
  DB_SAU_final$ANNO <- gsub("a_", "", DB_SAU_final$ANNO)
  DB_SAU_final <- DB_SAU_final[,c(3,1,2,6,4,5)]
  DB_SAU_final$SAU_NUM <- as.numeric(DB_SAU_final$SAU)
  
  DB_SAU_final$CODICE_COLTURA <- ""
  for (i in 1:nrow(DB_SAU_final)){
       word.list <- str_split(DB_SAU_final$COLTURA[i], "\\s+")
       words     <- unlist(word.list)
       cod_colt  <- words[length(words)] 
       DB_SAU_final$CODICE_COLTURA[i] <- cod_colt
       print(i)}
  remove(i, word.list, words, cod_colt)
  
  #Aggregation Database and information alignment
  DATABASE_1 <- merge(DB_SUPERFICI_final, DB_PRODUZIONI_final[,c(1,2,8,5:7)], by = c("ANNO","GEO_CODE","CODICE_COLTURA"), all.x = TRUE, all.y = TRUE)
  DATABASE_1 <- merge(DATABASE_1, DB_SAU_final[,c(1,2,5:7)], by = c("ANNO","GEO_CODE"), all.x = TRUE, all.y = FALSE)
  DATABASE_1 <- subset(DATABASE_1, select = c("ANNO","GEO_CODE","GEO_TABLES",
                                              "CODICE_COLTURA","COLTURA","SUPERFICIE_NUM","FLAG_SUP",
                                              "PRODUZIONE_NUM","FLAG_PROD","SAU_NUM","FLAG_SAU"))
  colnames(DATABASE_1)[1:11] <- c("YEAR","NUTS2_CODE","NUTS2_NAME",
                                  "CROP_CODE","CROP_NAME","AREA","FLAG_AREA",
                                  "PROD","FLAG_PROD","SAU","FLAG_SAU")

  DATABASE_1$SOURCE_CODE <- "[APRO_CPSHR]"
  DATABASE_1$SOURCE_LINK <- "https://ec.europa.eu/eurostat/databrowser/view/apro_cpshr/default/table?lang=en"
  DATABASE_1$SOURCE_NAME <- "Crop production in EU standard humidity by NUTS 2 regions"
  
  #Selection of EU countries and reference period (year 2017-2021)
  DATABASE_1$NUTS0_CODE <- substr(DATABASE_1$NUTS2_CODE,1,2)
  CODE_EU_27 <- c("BE",	"BG",	"CZ",	"DK",	"DE",	"EE",	"IE",	"EL",	"ES",	"FR",	"HR",	"IT",	
                  "CY",	"LV",	"LT",	"LU",	"HU",	"MT",	"NL",	"AT",	"PL",	"PT",	"RO",	"SI",	
                  "SK",	"FI",	"SE")
  DATABASE_1 <- DATABASE_1[DATABASE_1$NUTS0_CODE %in% CODE_EU_27,]
  remove(CODE_EU_27) 
  DATABASE_1 <- subset(DATABASE_1, DATABASE_1$YEAR>=2017)
  
  temp_TAB <- unique(DATABASE_1[,c(2,3)])
  temp_TAB <- subset(temp_TAB, nchar(temp_TAB$NUTS2_CODE)==2)
  colnames(temp_TAB)[1:2] <- c("NUTS0_CODE","NUTS0_NAME")
  DATABASE_1 <- merge(DATABASE_1, temp_TAB, by = "NUTS0_CODE", all.x = TRUE, all.y = FALSE)
  remove(temp_TAB)
  
  DATABASE_1$CROP_CODE <- gsub("\\[|\\]","", DATABASE_1$CROP_CODE)
  
  remove(DB_SUPERFICI_final, DB_PRODUZIONI_final, DB_SAU_final)
  
#3.PROCESSING DATABASE FILE "CROPS" - WITH_HUMIDITY - EUROSTAT ========================================================================================================  
  #Data import and transpose data by year - Variable AREA
  ELENCO_sheets <- getSheetNames("C:\\Users\\...............\\AREA_apro_cpnh1__custom_5395178_spreadsheet.xlsx")
  ELENCO_sheets <- ELENCO_sheets[5:199]
  ELENCO_sheets
  
  ELENCO_colonne <- seq(3,19,2)
  setwd("C:\\Users\\.................\\data folder")
  
  DB_SUPERFICI_final <- data.frame()
  for (i in 1:length(ELENCO_sheets)){
       print(paste(ELENCO_sheets[i], " - Caricamento del foglio ", i, " di 197 fogli", sep = ""))
       n_sheet <- ELENCO_sheets[i]
       coltura <- colnames(read.xlsx(xlsxFile = "AREA_apro_cpnh1__custom_5395178_spreadsheet.xlsx", sheet = n_sheet, rows = 6, cols = 3))  
       coltura <- gsub(".", " ", coltura, fixed = TRUE)
       table <- read.xlsx(xlsxFile = "AREA_apro_cpnh1__custom_5395178_spreadsheet.xlsx", sheet = n_sheet, 
                          rows = c(10:51), cols = c(1:20))
       colnames(table)[1:20] <- c("GEO_CODE", "GEO_TABLES", "a_2013", "flag_13", "a_2014", "flag_14", "a_2015", 
                                  "flag_15","a_2016", "flag_16", "a_2017", "flag_17", "a_2018", "flag_18", 
                                  "a_2019", "flag_19","a_2020", "flag_20", "a_2021", "flag_21")
       
       #2013
       temp_1a <- table[,c(1,2,3)]
       temp_1a <- melt(temp_1a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_1b <- table[,c(1,2,4)]
       temp_1b <- melt(temp_1b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_1 <- data.frame(temp_1a, flag = temp_1b[,4])
       remove(temp_1a, temp_1b)
       #2014
       temp_2a <- table[,c(1,2,5)]
       temp_2a <- melt(temp_2a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_2b <- table[,c(1,2,6)]
       temp_2b <- melt(temp_2b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_2 <- data.frame(temp_2a, flag = temp_2b[,4])
       remove(temp_2a, temp_2b)
       #2015
       temp_3a <- table[,c(1,2,7)]
       temp_3a <- melt(temp_3a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_3b <- table[,c(1,2,8)]
       temp_3b <- melt(temp_3b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_3 <- data.frame(temp_3a, flag = temp_3b[,4])
       remove(temp_3a, temp_3b)
       #2016
       temp_4a <- table[,c(1,2,9)]
       temp_4a <- melt(temp_4a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_4b <- table[,c(1,2,10)]
       temp_4b <- melt(temp_4b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_4 <- data.frame(temp_4a, flag = temp_4b[,4])
       remove(temp_4a, temp_4b)
       #2017
       temp_5a <- table[,c(1,2,11)]
       temp_5a <- melt(temp_5a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_5b <- table[,c(1,2,12)]
       temp_5b <- melt(temp_5b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_5 <- data.frame(temp_5a, flag = temp_5b[,4])
       remove(temp_5a, temp_5b)
       #2018
       temp_6a <- table[,c(1,2,13)]
       temp_6a <- melt(temp_6a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_6b <- table[,c(1,2,14)]
       temp_6b <- melt(temp_6b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_6 <- data.frame(temp_6a, flag = temp_6b[,4])
       remove(temp_6a, temp_6b)
       #2019
       temp_7a <- table[,c(1,2,15)]
       temp_7a <- melt(temp_7a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_7b <- table[,c(1,2,16)]
       temp_7b <- melt(temp_7b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_7 <- data.frame(temp_7a, flag = temp_7b[,4])
       remove(temp_7a, temp_7b)
       #2020
       temp_8a <- table[,c(1,2,17)]
       temp_8a <- melt(temp_8a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_8b <- table[,c(1,2,18)]
       temp_8b <- melt(temp_8b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_8 <- data.frame(temp_8a, flag = temp_8b[,4])
       remove(temp_8a, temp_8b)
       #2021
       temp_9a <- table[,c(1,2,19)]
       temp_9a <- melt(temp_9a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_9b <- table[,c(1,2,20)]
       temp_9b <- melt(temp_9b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_9 <- data.frame(temp_9a, flag = temp_9b[,4])
       remove(temp_9a, temp_9b)
       
       TEMP <- rbind(temp_1, temp_2, temp_3, temp_4, temp_5, temp_6, temp_7, temp_8, temp_9)
       TEMP$Coltura <- coltura
       DB_SUPERFICI_final <- rbind(DB_SUPERFICI_final, TEMP)}
  
  remove(i, table, coltura, n_sheet, TEMP, temp_1, temp_2, temp_3, temp_4, temp_5, temp_6, temp_7, temp_8, temp_9)
  remove(ELENCO_sheets, ELENCO_colonne)
  
  colnames(DB_SUPERFICI_final)[3:6] <- c("ANNO", "AREA", "FLAG_AREA", "CROP_NAME")
  DB_SUPERFICI_final$ANNO <- gsub("a_", "", DB_SUPERFICI_final$ANNO)
  DB_SUPERFICI_final <- DB_SUPERFICI_final[,c(3,1,2,6,4,5)]
  DB_SUPERFICI_final$AREA_NUM <- as.numeric(DB_SUPERFICI_final$AREA)
  
  DB_SUPERFICI_final$CROP_CODE <- ""
  for (i in 1:nrow(DB_SUPERFICI_final)){
       word.list <- str_split(DB_SUPERFICI_final$CROP_NAME[i], "\\s+")
       words     <- unlist(word.list)
       cod_colt  <- words[length(words)] 
       DB_SUPERFICI_final$CROP_CODE[i] <- cod_colt
       print(i)}
       remove(i, word.list, words, cod_colt)
  
  DB_SUPERFICI_final <- DB_SUPERFICI_final[,c(1:3,8,4,7,6)]
  colnames(DB_SUPERFICI_final)[c(2,3,6,7)] <- c("NUTS0_CODE","NUTS0_NAME","AREA","FLAG_AREA")
  DB_SUPERFICI_final <- DB_SUPERFICI_final[order(DB_SUPERFICI_final$ANNO, DB_SUPERFICI_final$NUTS0_CODE, DB_SUPERFICI_final$CROP_CODE),]
  
  DB_SUPERFICI_final <- subset(DB_SUPERFICI_final, DB_SUPERFICI_final$ANNO>=2017)
  
  #Data import and transpose data by year - Variable PRODUCTION      
  ELENCO_sheets <- getSheetNames("C:\\Users\\........\\PROD_apro_cpnh1__custom_5396069_spreadsheet.xlsx")
  ELENCO_sheets <- ELENCO_sheets[5:199]
  ELENCO_sheets
  
  length(ELENCO_sheets)
  ELENCO_colonne <- seq(3,19,2)
  
  setwd("C:\\Users\\................\\data folder")
  
  DB_PRODUZIONI_final <- data.frame()
  for (i in 1:length(ELENCO_sheets)){
       print(paste(ELENCO_sheets[i], " - Caricamento del foglio ", i, " di 197 fogli", sep = ""))
       n_sheet <- ELENCO_sheets[i]
       coltura <- colnames(read.xlsx(xlsxFile = "PROD_apro_cpnh1__custom_5396069_spreadsheet.xlsx", sheet = n_sheet, rows = 6, cols = 3))  
       coltura <- gsub(".", " ", coltura, fixed = TRUE)
       table <- read.xlsx(xlsxFile = "PROD_apro_cpnh1__custom_5396069_spreadsheet.xlsx", sheet = n_sheet, 
                          rows = c(10:51), cols = c(1:20))
       colnames(table)[1:20] <- c("GEO_CODE", "GEO_TABLES", "a_2013", "flag_13", "a_2014", "flag_14", "a_2015", "flag_15",
                                  "a_2016", "flag_16", "a_2017", "flag_17", "a_2018", "flag_18", "a_2019", "flag_19",
                                  "a_2020", "flag_20", "a_2021", "flag_21")
       
       #2013
       temp_1a <- table[,c(1:3)]
       temp_1a <- melt(temp_1a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_1b <- table[,c(1,2,4)]
       temp_1b <- melt(temp_1b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_1 <- data.frame(temp_1a, flag = temp_1b[,4])
       remove(temp_1a, temp_1b)
       #2014
       temp_2a <- table[,c(1,2,5)]
       temp_2a <- melt(temp_2a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_2b <- table[,c(1,2,6)]
       temp_2b <- melt(temp_2b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_2 <- data.frame(temp_2a, flag = temp_2b[,4])
       remove(temp_2a, temp_2b)
       #2015
       temp_3a <- table[,c(1,2,7)]
       temp_3a <- melt(temp_3a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_3b <- table[,c(1,2,8)]
       temp_3b <- melt(temp_3b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_3 <- data.frame(temp_3a, flag = temp_3b[,4])
       remove(temp_3a, temp_3b)
       #2016
       temp_4a <- table[,c(1,2,9)]
       temp_4a <- melt(temp_4a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_4b <- table[,c(1,2,10)]
       temp_4b <- melt(temp_4b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_4 <- data.frame(temp_4a, flag = temp_4b[,4])
       remove(temp_4a, temp_4b)
       #2017
       temp_5a <- table[,c(1,2,11)]
       temp_5a <- melt(temp_5a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_5b <- table[,c(1,2,12)]
       temp_5b <- melt(temp_5b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_5 <- data.frame(temp_5a, flag = temp_5b[,4])
       remove(temp_5a, temp_5b)
       #2018
       temp_6a <- table[,c(1,2,13)]
       temp_6a <- melt(temp_6a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_6b <- table[,c(1,2,14)]
       temp_6b <- melt(temp_6b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_6 <- data.frame(temp_6a, flag = temp_6b[,4])
       remove(temp_6a, temp_6b)
       #2019
       temp_7a <- table[,c(1,2,15)]
       temp_7a <- melt(temp_7a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_7b <- table[,c(1,2,16)]
       temp_7b <- melt(temp_7b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_7 <- data.frame(temp_7a, flag = temp_7b[,4])
       remove(temp_7a, temp_7b)
       #2020
       temp_8a <- table[,c(1,2,17)]
       temp_8a <- melt(temp_8a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_8b <- table[,c(1,2,18)]
       temp_8b <- melt(temp_8b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_8 <- data.frame(temp_8a, flag = temp_8b[,4])
       remove(temp_8a, temp_8b)
       #2021
       temp_9a <- table[,c(1,2,19)]
       temp_9a <- melt(temp_9a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_9b <- table[,c(1,2,20)]
       temp_9b <- melt(temp_9b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_9 <- data.frame(temp_9a, flag = temp_9b[,4])
       remove(temp_9a, temp_9b)
       
       TEMP <- rbind(temp_1, temp_2, temp_3, temp_4, temp_5, temp_6, temp_7, temp_8, temp_9)
       TEMP$Coltura <- coltura
       DB_PRODUZIONI_final <- rbind(DB_PRODUZIONI_final, TEMP)}
  
  remove(i, table, coltura, n_sheet, TEMP, temp_1, temp_2, temp_3, temp_4, temp_5, temp_6, temp_7, temp_8, temp_9)
  remove(ELENCO_sheets, ELENCO_colonne)
  
  colnames(DB_PRODUZIONI_final)[3:6] <- c("ANNO", "PRODUCTION", "FLAG_PROD", "CROP_NAME")
  DB_PRODUZIONI_final$ANNO <- gsub("a_", "", DB_PRODUZIONI_final$ANNO)
  DB_PRODUZIONI_final <- DB_PRODUZIONI_final[,c(3,1,2,6,4,5)]
  DB_PRODUZIONI_final$PRODUCTION_NUM <- as.numeric(DB_PRODUZIONI_final$PRODUCTION)
  
  DB_PRODUZIONI_final$CROP_CODE <- ""
  for (i in 1:nrow(DB_PRODUZIONI_final)){
       word.list <- str_split(DB_PRODUZIONI_final$CROP_NAME[i], "\\s+")
       words     <- unlist(word.list)
       cod_colt  <- words[length(words)] 
       DB_PRODUZIONI_final$CROP_CODE[i] <- cod_colt
       print(i)}
  remove(i, word.list, words, cod_colt)
  
  DB_PRODUZIONI_final <- DB_PRODUZIONI_final[,c(1:3,8,4,7,6)]
  colnames(DB_PRODUZIONI_final)[c(2,3,6,7)] <- c("NUTS0_CODE","NUTS0_NAME","PRODUCTION","FLAG_PROD")
  DB_PRODUZIONI_final <- DB_PRODUZIONI_final[order(DB_PRODUZIONI_final$ANNO, DB_PRODUZIONI_final$NUTS0_CODE, DB_PRODUZIONI_final$CROP_CODE),]
  
  DB_PRODUZIONI_final <- subset(DB_PRODUZIONI_final, DB_PRODUZIONI_final$ANNO>=2017)
  
  #Data import and transpose data by year - Variable UTILISED AGRICULTURAL AREA (UAA)     
  ELENCO_sheets <- c("Sheet 1")
  
  setwd("C:\\Users\\................\\data folder")
  
  DB_SAU_final <- data.frame()
  for (i in 1:length(ELENCO_sheets)){
       print(paste(ELENCO_sheets[i], " - Caricamento del foglio ", i, " di 1 foglio", sep = ""))
       table <- read.xlsx(xlsxFile = "SAU_apro_cpnh1__custom_5390220_spreadsheet.xlsx", sheet = ELENCO_sheets, 
                          rows = c(10:51), cols = c(1:18))
       colnames(table)[1:18] <- c("GEO_CODE", "GEO_TABLES", "a_2014", "flag_14", "a_2015", "flag_15","a_2016", "flag_16",
                                  "a_2017", "flag_17", "a_2018", "flag_18", "a_2019", "flag_19","a_2020", "flag_20",
                                  "a_2021", "flag_21")
       
       #2014
       temp_2a <- table[,c(1,2,3)]
       temp_2a <- melt(temp_2a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_2b <- table[,c(1,2,4)]
       temp_2b <- melt(temp_2b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_2 <- data.frame(temp_2a, flag = temp_2b[,4])
       remove(temp_2a, temp_2b)
       #2015
       temp_3a <- table[,c(1,2,5)]
       temp_3a <- melt(temp_3a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_3b <- table[,c(1,2,6)]
       temp_3b <- melt(temp_3b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_3 <- data.frame(temp_3a, flag = temp_3b[,4])
       remove(temp_3a, temp_3b)
       #2016
       temp_4a <- table[,c(1,2,7)]
       temp_4a <- melt(temp_4a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_4b <- table[,c(1,2,8)]
       temp_4b <- melt(temp_4b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_4 <- data.frame(temp_4a, flag = temp_4b[,4])
       remove(temp_4a, temp_4b)
       #2017
       temp_5a <- table[,c(1,2,9)]
       temp_5a <- melt(temp_5a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_5b <- table[,c(1,2,10)]
       temp_5b <- melt(temp_5b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_5 <- data.frame(temp_5a, flag = temp_5b[,4])
       remove(temp_5a, temp_5b)
       #2018
       temp_6a <- table[,c(1,2,11)]
       temp_6a <- melt(temp_6a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_6b <- table[,c(1,2,12)]
       temp_6b <- melt(temp_6b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_6 <- data.frame(temp_6a, flag = temp_6b[,4])
       remove(temp_6a, temp_6b)
       #2019
       temp_7a <- table[,c(1,2,13)]
       temp_7a <- melt(temp_7a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_7b <- table[,c(1,2,14)]
       temp_7b <- melt(temp_7b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_7 <- data.frame(temp_7a, flag = temp_7b[,4])
       remove(temp_7a, temp_7b)
       #2020
       temp_8a <- table[,c(1,2,15)]
       temp_8a <- melt(temp_8a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_8b <- table[,c(1,2,16)]
       temp_8b <- melt(temp_8b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_8 <- data.frame(temp_8a, flag = temp_8b[,4])
       remove(temp_8a, temp_8b)
       #2021
       temp_9a <- table[,c(1,2,17)]
       temp_9a <- melt(temp_9a, id = c("GEO_CODE", "GEO_TABLES"))
       temp_9b <- table[,c(1,2,18)]
       temp_9b <- melt(temp_9b, id = c("GEO_CODE", "GEO_TABLES"))
       temp_9 <- data.frame(temp_9a, flag = temp_9b[,4])
       remove(temp_9a, temp_9b)
       
       TEMP <- rbind(temp_2, temp_3, temp_4, temp_5, temp_6, temp_7, temp_8, temp_9)
       DB_SAU_final <- rbind(DB_SAU_final, TEMP)}
     
  remove(i, table, TEMP, temp_2, temp_3, temp_4, temp_5, temp_6, temp_7, temp_8, temp_9)
  remove(ELENCO_sheets)
  
  colnames(DB_SAU_final)[3:5] <- c("ANNO", "UAA", "FLAG_UAA")
  DB_SAU_final$ANNO <- gsub("a_", "", DB_SAU_final$ANNO)
  DB_SAU_final <- DB_SAU_final[,c(3,1,2,4,5)]
  DB_SAU_final$UAA_NUM <- as.numeric(DB_SAU_final$UAA)
  
  DB_SAU_final <- DB_SAU_final[,c(1:3,6,5)]
  colnames(DB_SAU_final)[c(2,3,4,5)] <- c("NUTS0_CODE","NUTS0_NAME","UAA","FLAG_UAA")
  DB_SAU_final <- DB_SAU_final[order(DB_SAU_final$ANNO, DB_SAU_final$NUTS0_CODE),]
  
  DB_SAU_final <- subset(DB_SAU_final, DB_SAU_final$ANNO>=2017)    

  #Aggregation Database and information alignments
  DB_SUPERFICI_final$AREA        <- as.numeric(DB_SUPERFICI_final$AREA)
  DB_PRODUZIONI_final$PRODUCTION <- as.numeric(DB_PRODUZIONI_final$PRODUCTION)
  DB_SAU_final$UAA               <- as.numeric(DB_SAU_final$UAA)
  
  DATABASE_2 <- merge(DB_SUPERFICI_final, DB_PRODUZIONI_final[,c(1,2,4,6,7)], by = c("ANNO","NUTS0_CODE","CROP_CODE"), all.x = TRUE, all.y = TRUE)
  DATABASE_2 <- merge(DATABASE_2, DB_SAU_final[,c(1,2,4,5)], by = c("ANNO","NUTS0_CODE"), all.x = TRUE, all.y = FALSE)
  colnames(DATABASE_2)
  DATABASE_2 <- subset(DATABASE_2, select = c("ANNO","NUTS0_CODE","NUTS0_NAME",
                                              "CROP_CODE","CROP_NAME","AREA","FLAG_AREA",
                                              "PRODUCTION","FLAG_PROD","UAA","FLAG_UAA"))
  
  colnames(DATABASE_2)
  colnames(DATABASE_2)[1:11] <- c("YEAR","NUTS0_CODE","NUTS0_NAME",
                                  "CROP_CODE","CROP_NAME","AREA","FLAG_AREA",
                                  "PROD","FLAG_PROD","SAU","FLAG_SAU")

  DATABASE_2$SOURCE_CODE <- "[APRO_CPNH1]"
  DATABASE_2$SOURCE_LINK <- "https://ec.europa.eu/eurostat/databrowser/view/apro_cpnh1/default/table?lang=en"
  DATABASE_2$SOURCE_NAME <- "Crop production in national humidity"
  
  DATABASE_2$NUTS2_CODE <- DATABASE_2$NUTS0_CODE
  DATABASE_2$NUTS2_NAME <- DATABASE_2$NUTS0_NAME
  
  DATABASE_2 <- subset(DATABASE_2, select = c("YEAR","NUTS0_CODE","NUTS0_NAME","NUTS2_CODE","NUTS2_NAME",
                                              "CROP_CODE","CROP_NAME","AREA","FLAG_AREA", "PROD","FLAG_PROD",
                                              "SAU","FLAG_SAU","SOURCE_CODE","SOURCE_LINK","SOURCE_NAME"))
  
  DATABASE_2$CROP_CODE <- gsub("\\[|\\]","", DATABASE_2$CROP_CODE)
  
  CODE_EU_27 <- c("BE",	"BG",	"CZ",	"DK",	"DE",	"EE",	"IE",	"EL",	"ES",	"FR",	"HR",	"IT",	
                  "CY",	"LV",	"LT",	"LU",	"HU",	"MT",	"NL",	"AT",	"PL",	"PT",	"RO",	"SI",	
                  "SK",	"FI",	"SE")
  DATABASE_2 <- DATABASE_2[DATABASE_2$NUTS0_CODE %in% CODE_EU_27,]
  remove(CODE_EU_27) 
  
  remove(DB_PRODUZIONI_final, DB_SUPERFICI_final, DB_SAU_final)
  
  #Export temporary Database_1 and Datanase_2 created
  setwd("C:\\Users\\................\\data folder")
  wb <- createWorkbook()
  addWorksheet(wb, sheetName = "DATABASE_1") 
  writeData(wb, sheet = 1, x = DATABASE_1, na.string = "")        #keep.na = TRUE
  addWorksheet(wb, sheetName = "DATABASE_2") 
  writeData(wb, sheet = 2, x = DATABASE_2, na.string = "")
  saveWorkbook(wb, "temp_DATABASE_1_2.xlsx", overwrite = TRUE)
  remove(wb)
  
#4.APPENDING DATABASE_1 (NO_HUMIDITY) & DATABASE_2 (WITH_HUMIDITY) ===========================================================================================================
  rm(list=ls())
  
  library(openxlsx)
  library(reshape2)
  library(plyr)
  
  DATABASE_1 <- read.xlsx("C:\\Users\\......\\temp_DATABASE_1_2.xlsx", sheet = "DATABASE_1")
  DATABASE_2 <- read.xlsx("C:\\Users\\......\\temp_DATABASE_1_2.xlsx", sheet = "DATABASE_2")
  
  DATABASE_1 <- subset(DATABASE_1, select = c("YEAR","NUTS0_CODE","NUTS0_NAME","NUTS2_CODE","NUTS2_NAME",
                                              "CROP_CODE","CROP_NAME","AREA","FLAG_AREA", "PROD","FLAG_PROD",
                                              "SAU","FLAG_SAU","SOURCE_CODE","SOURCE_LINK","SOURCE_NAME"))
  DATABASE_2 <- subset(DATABASE_2, select = c("YEAR","NUTS0_CODE","NUTS0_NAME","NUTS2_CODE","NUTS2_NAME",
                                              "CROP_CODE","CROP_NAME","AREA","FLAG_AREA", "PROD","FLAG_PROD",
                                              "SAU","FLAG_SAU","SOURCE_CODE","SOURCE_LINK","SOURCE_NAME"))
  
  TAB_1 <- data.frame(YEAR = DATABASE_1$YEAR, NUTS2_CODE = DATABASE_1$NUTS2_CODE, CROP_CODE = DATABASE_1$CROP_CODE, FLAG_noHUM = 1)
  TAB_2 <- data.frame(YEAR = DATABASE_2$YEAR, NUTS2_CODE = DATABASE_2$NUTS2_CODE, CROP_CODE = DATABASE_2$CROP_CODE, FLAG_HUM = 1)
  
  temp_TAB <- merge(TAB_1, TAB_2, by = c("YEAR","NUTS2_CODE","CROP_CODE"), all.x = TRUE, all.y = TRUE)
  remove(TAB_1, TAB_2)
  temp_TAB$KEEP_ROW <- 0
  temp_TAB$KEEP_ROW <- ifelse(temp_TAB$FLAG_noHUM==1, 1, temp_TAB$KEEP_ROW) 
  temp_TAB$KEEP_ROW <- ifelse(is.na(temp_TAB$FLAG_noHUM)==TRUE & temp_TAB$FLAG_HUM==1, 2, temp_TAB$KEEP_ROW) 
  table(temp_TAB$KEEP_ROW, useNA = "always")
  
  temp_KEEP_ROW_db1 <- subset(temp_TAB, temp_TAB$KEEP_ROW==1)
  temp_KEEP_ROW_db2 <- subset(temp_TAB, temp_TAB$KEEP_ROW==2)
  remove(temp_TAB)
  
  DATABASE_1 <- merge(DATABASE_1, temp_KEEP_ROW_db1[,c(1:3)], by = c("YEAR","NUTS2_CODE","CROP_CODE"), all.x = FALSE, all.y = TRUE)
  DATABASE_2 <- merge(DATABASE_2, temp_KEEP_ROW_db2[,c(1:3)], by = c("YEAR","NUTS2_CODE","CROP_CODE"), all.x = FALSE, all.y = TRUE)
  remove(temp_KEEP_ROW_db1, temp_KEEP_ROW_db2)
  
  names(DATABASE_1)==names(DATABASE_2)
  DATABASE <- rbind(DATABASE_1, DATABASE_2)
  
  DATABASE <- DATABASE[order(DATABASE$CROP_CODE, DATABASE$NUTS2_CODE, DATABASE$YEAR),] 
  remove(DATABASE_1, DATABASE_2)
  
  DATABASE$FLAG_del_row <- 0
  for (i in 2:nrow(DATABASE)){
       print(i)
       DATABASE$FLAG_del_row[i]<- ifelse(DATABASE[i,c(1:13)]==DATABASE[i-1,c(1:13)] & DATABASE$SOURCE_CODE[i]=="[apro_cpnh1]", 1, 0)}
       remove(i)
  table(DATABASE$FLAG_del_row)    #test, no repeated lines between Database_1 & Database_2

  DATABASE <- subset(DATABASE, DATABASE$NUTS2_CODE!="CY0" & DATABASE$NUTS2_CODE!="CY00" &
                               DATABASE$NUTS2_CODE!="CYZ" & DATABASE$NUTS2_CODE!="CYZZ")
  
  DATABASE <- subset(DATABASE, DATABASE$CROP_CODE!="C1100"      & DATABASE$CROP_CODE!="C1111"      &
                               DATABASE$CROP_CODE!="C1112"      & DATABASE$CROP_CODE!="C1200"      &
                               DATABASE$CROP_CODE!="C1310"      & DATABASE$CROP_CODE!="C1320"      &
                               DATABASE$CROP_CODE!="C1400"      & DATABASE$CROP_CODE!="F1111"      &
                               DATABASE$CROP_CODE!="F1112"      & DATABASE$CROP_CODE!="F1121"      &
                               DATABASE$CROP_CODE!="F1122"      & DATABASE$CROP_CODE!="F1210_1220" &
                               DATABASE$CROP_CODE!="F1212_1222" & DATABASE$CROP_CODE!="I1110-1130" &
                               DATABASE$CROP_CODE!="I1111"      & DATABASE$CROP_CODE!="I1112"      &
                               DATABASE$CROP_CODE!="S0000S"     & DATABASE$CROP_CODE!="T1100"      &
                               DATABASE$CROP_CODE!="T1200"      & DATABASE$CROP_CODE!="T1300"      &
                               DATABASE$CROP_CODE!="T1900"      & DATABASE$CROP_CODE!="T3000"      &
                               DATABASE$CROP_CODE!="V2300S"     & DATABASE$CROP_CODE!="V2710"      &
                               DATABASE$CROP_CODE!="V2720"      & DATABASE$CROP_CODE!="V3100S"     &
                               DATABASE$CROP_CODE!="V3110"      & DATABASE$CROP_CODE!="V3120"      &
                               DATABASE$CROP_CODE!="V3200S"     & DATABASE$CROP_CODE!="W1110"      &
                               DATABASE$CROP_CODE!="W1110_1120" & DATABASE$CROP_CODE!="W1120")
  
  DATABASE$rem_ROW <- grepl("Extra-Regio NUTS", DATABASE$NUTS2_NAME)
  table(DATABASE$rem_ROW)
  DATABASE <- subset(DATABASE, DATABASE$rem_ROW==FALSE)
  
#5.IMPORT ADMINISTRATIVE AREA (BY NUTS0 AND NUTS2) & CALCULATION OF AVERAGE (5 YR) ======================================================================================================= 
  TOTAL_AREA <- read.xlsx(xlsxFile = "C:\\Users\\......\\Area by NUTS 3 region - demo_r_d3area__custom_6820433_spreadsheet.xlsx", 
                          rows = c(10:1979), cols = c(1,2,11), sheet = "Sheet 1")
  colnames(TOTAL_AREA)[1:3] <- c("NUTS2_CODE", "NUTS2_NAME", "TOTAL_AREA")
  TOTAL_AREA$TOTAL_AREA <- as.numeric(TOTAL_AREA$TOTAL_AREA)
  TOTAL_AREA$TOTAL_AREA <- TOTAL_AREA$TOTAL_AREA*0.1
  
  #NUTS2 codes update - France
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR","FR",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR10","FR10",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR21","FRF2",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR22","FRE2",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR23","FRD2",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR24","FRB0",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR25","FRD1",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR26","FRC1",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR30","FRE1",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR41","FRF3",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR42","FRF1",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR43","FRC2",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR51","FRG0",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR52","FRH0",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR53","FRI3",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR61","FRI1",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR62","FRJ2",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR63","FRI2",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR71","FRK2",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR72","FRK1",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR81","FRJ1",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR82","FRL0",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FR83","FRM0",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FRA1","FRY1",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FRA2","FRY2",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FRA3","FRY3",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FRA4","FRY4",TOTAL_AREA$NUTS2_CODE)
  TOTAL_AREA$NUTS2_CODE <- ifelse(TOTAL_AREA$NUTS2_CODE=="FRA5","FRY5",TOTAL_AREA$NUTS2_CODE)
 
  DATABASE <- merge(DATABASE, TOTAL_AREA[,c(1,3)], by = "NUTS2_CODE", all.x = TRUE, all.y = FALSE)

  CTRL_1 <- DATABASE[is.na(DATABASE$TOTAL_AREA)==TRUE,]  
  remove(CTRL_1)

  DATABASE$LEVEL_NUTS <- nchar(DATABASE$NUTS2_CODE)
  DATABASE$LEVEL_NUTS [DATABASE$LEVEL_NUTS==2] <- "NUTS0"
  DATABASE$LEVEL_NUTS [DATABASE$LEVEL_NUTS==3] <- "NUTS1"
  DATABASE$LEVEL_NUTS [DATABASE$LEVEL_NUTS==4] <- "NUTS2"
  table(DATABASE$LEVEL_NUTS)
  
  DATABASE$LEVEL_NUTS [DATABASE$NUTS2_CODE=="EL41_42"] <- "NUTS1"
  table(DATABASE$LEVEL_NUTS)
  
  DATABASE <- subset(DATABASE, select = c("YEAR","NUTS0_CODE","NUTS0_NAME", "NUTS2_NAME","NUTS2_CODE","LEVEL_NUTS",
                                          "CROP_CODE","CROP_NAME","AREA","FLAG_AREA","PROD","FLAG_PROD","SAU","FLAG_SAU",
                                          "TOTAL_AREA","SOURCE_CODE","SOURCE_LINK","SOURCE_NAME")) 

  #Integration in the Database of 5yr average and SPA16 values 
  temp_avg <- ddply(DATABASE, c("NUTS2_CODE", "CROP_CODE"), summarise,
                    AREA_5YR_AVG = round(mean(AREA, na.rm = TRUE), 2),
                    FREQ_AREA_5YR_AVG = sum(is.na(AREA)==FALSE),
                    PROD_5YR_AVG = round(mean(PROD, na.rm = TRUE), 2),
                    FREQ_PROD_5YR_AVG = sum(is.na(PROD)==FALSE),
                    SAU_5YR_AVG  = round(mean(SAU, na.rm = TRUE), 2),
                    FREQ_SAU_5YR_AVG = sum(is.na(SAU)==FALSE))
  
  temp_avg$FREQ_AREA_5YR_AVG[is.nan(temp_avg$AREA_5YR_AVG)] <- NA
  temp_avg$AREA_5YR_AVG[is.nan(temp_avg$AREA_5YR_AVG)] <- NA
  
  temp_avg$FREQ_PROD_5YR_AVG[is.nan(temp_avg$PROD_5YR_AVG)] <- NA
  temp_avg$PROD_5YR_AVG[is.nan(temp_avg$PROD_5YR_AVG)] <- NA
  
  temp_avg$FREQ_SAU_5YR_AVG[is.nan(temp_avg$SAU_5YR_AVG)] <- NA
  temp_avg$SAU_5YR_AVG[is.nan(temp_avg$SAU_5YR_AVG)] <- NA
  
  DATABASE <- merge(DATABASE, temp_avg, by = c("NUTS2_CODE", "CROP_CODE"), all.x = TRUE, all.y = FALSE)  
  remove(temp_avg)
  
  DATABASE$PERC_AREA_SAU <- round(DATABASE$AREA/DATABASE$SAU*100, 2)
  DATABASE$PERC_AREA_totAREA <- round(DATABASE$AREA/DATABASE$TOTAL_AREA*100, 2)
 
  DATABASE <- subset(DATABASE, select = c("YEAR","NUTS0_CODE","NUTS0_NAME", "NUTS2_NAME","NUTS2_CODE","LEVEL_NUTS",
                                          "CROP_CODE","CROP_NAME","AREA","FLAG_AREA","PROD","FLAG_PROD","SAU","FLAG_SAU",
                                          "TOTAL_AREA","AREA_5YR_AVG","FREQ_AREA_5YR_AVG","PROD_5YR_AVG","FREQ_PROD_5YR_AVG",
                                          "SAU_5YR_AVG","FREQ_SAU_5YR_AVG","PERC_AREA_SAU","PERC_AREA_totAREA",
                                          "SOURCE_CODE","SOURCE_LINK","SOURCE_NAME")) 
  
#6.CALCULATION SPA16 ESTIMATES ====================================================================================================================
  options(scipen = 999)
  
  setwd("C:\\Users\\................\\data folder")
  DB_EU_SPA16 <-  read.xlsx(xlsxFile = "Dati SPA 2016 - EU27 (1502_23).xlsx", rows = c(12:342), cols = c(1:75), sheet = "Sheet 1")
  
  for (i in 3:ncol(DB_EU_SPA16)) {
       DB_EU_SPA16[,i] <- as.numeric(DB_EU_SPA16[,i])}
       remove(i)
  
  DB_EU_SPA16_PERC <- subset(DB_EU_SPA16, select = c("NUTS2_CODE","NUTS2_NAME",
                                                     "F1000","F2000","F3000","F4000",
                                                     "W1110_1120","W1190","W1200","W1300",
                                                     "O1100","O1910"))
  DB_EU_SPA16_PERC$NUTS0_CODE <- substr(DB_EU_SPA16_PERC$NUTS2_CODE, 1, 2)
  
  temp_TAB_NUTS0 <- data.frame(NUTS0_CODE = DB_EU_SPA16$NUTS2_CODE, NUTS0_NAME = DB_EU_SPA16$NUTS2_NAME)
  temp_TAB_NUTS0 <- subset(temp_TAB_NUTS0, nchar(temp_TAB_NUTS0$NUTS0_CODE)==2)
  DB_EU_SPA16_PERC <- merge(DB_EU_SPA16_PERC, temp_TAB_NUTS0, by = c("NUTS0_CODE"), all.x = TRUE, all.y = FALSE)
  remove(temp_TAB_NUTS0, DB_EU_SPA16)  
  
  DB_EU_SPA16_PERC <- DB_EU_SPA16_PERC[,c(1,14,2:13)]
  
  #NUTS2 codes update - France
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR","FR",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR10","FR10",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR21","FRF2",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR22","FRE2",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR23","FRD2",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR24","FRB0",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR25","FRD1",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR26","FRC1",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR30","FRE1",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR41","FRF3",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR42","FRF1",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR43","FRC2",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR51","FRG0",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR52","FRH0",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR53","FRI3",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR61","FRI1",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR62","FRJ2",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR63","FRI2",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR71","FRK2",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR72","FRK1",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR81","FRJ1",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR82","FRL0",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FR83","FRM0",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FRA1","FRY1",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FRA2","FRY2",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FRA3","FRY3",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_CODE <- ifelse(DB_EU_SPA16_PERC$NUTS2_CODE=="FRA4","FRY4",DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="France","France",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Île de France","Île de France",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Champagne-Ardenne (NUTS 2013)","Champagne-Ardenne",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Picardie (NUTS 2013)","Picardie",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Haute-Normandie (NUTS 2013)","Haute-Normandie",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Centre (FR) (NUTS 2013)","Centre - Val de Loire",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Basse-Normandie (NUTS 2013)","Basse-Normandie",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Bourgogne (NUTS 2013)","Bourgogne",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Nord-Pas-de-Calais (NUTS 2013)","Nord-Pas-de-Calais",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Lorraine (NUTS 2013)","Lorraine",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Alsace (NUTS 2013)","Alsace",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Franche-Comté (NUTS 2013)","Franche-Comté",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Pays de la Loire (NUTS 2013)","Pays-de-la-Loire",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Bretagne (NUTS 2013)","Bretagne",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Poitou-Charentes (NUTS 2013)","Poitou-Charentes",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Aquitaine (NUTS 2013)","Aquitaine",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Midi-Pyrénées (NUTS 2013)","Midi-Pyrénées",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Limousin (NUTS 2013)","Limousin",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Rhône-Alpes (NUTS 2013)","Rhône-Alpes",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Auvergne (NUTS 2013)","Auvergne",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Languedoc-Roussillon (NUTS 2013)","Languedoc-Roussillon",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Provence-Alpes-Côte d'Azur (NUTS 2013)","Provence-Alpes-Côte d'Azur",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Corse (NUTS 2013)","Corse",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Guadeloupe (NUTS 2013)","Guadeloupe",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Martinique (NUTS 2013)","Martinique",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="Guyane (NUTS 2013)","Guyane",DB_EU_SPA16_PERC$NUTS2_NAME)
  DB_EU_SPA16_PERC$NUTS2_NAME <- ifelse(DB_EU_SPA16_PERC$NUTS2_NAME=="La Réunion (NUTS 2013)","La Réunion",DB_EU_SPA16_PERC$NUTS2_NAME)
  
  ADD_Mayotte_FR <- data.frame("FR","France","FRY5","Mayotte",0,0,0,0,0,0,0,0,0,0)
  colnames(ADD_Mayotte_FR)[1:14] <- colnames(DB_EU_SPA16_PERC)
  DB_EU_SPA16_PERC <- rbind(DB_EU_SPA16_PERC, ADD_Mayotte_FR)
  remove(ADD_Mayotte_FR)
  
  DB_EU_SPA16_PERC <- DB_EU_SPA16_PERC[order(DB_EU_SPA16_PERC$NUTS2_CODE),]
  DB_EU_SPA16_PERC[is.na(DB_EU_SPA16_PERC)] <- 0 
  
  attach(DB_EU_SPA16_PERC)
  DB_EU_SPA16_PERC <- subset(DB_EU_SPA16_PERC, NUTS2_CODE!="FR91" & NUTS2_CODE!="FR92"&NUTS2_CODE!="FR93" & NUTS2_CODE!="FR94")
  detach(DB_EU_SPA16_PERC)
  
  attach(DB_EU_SPA16_PERC)
  DB_EU_SPA16_PERC$F0000 <- F1000+F2000+F3000+F4000
  DB_EU_SPA16_PERC$W1000 <- W1110_1120+W1200+W1300+W1190
  DB_EU_SPA16_PERC$O1000 <- O1100+O1910 
  detach(DB_EU_SPA16_PERC)
  
  #Calculation of the incidence of crop area (AREA) on national Utilised agricultural area (UAA)
  TEMP_sup_naz <- subset(DB_EU_SPA16_PERC[,c(1:2,15:17)], nchar(DB_EU_SPA16_PERC$NUTS2_CODE)==2)
  colnames(TEMP_sup_naz)[3:5] <- c("F0000_naz","W1000_naz","O1000_naz")
  DB_EU_SPA16_PERC <- merge(DB_EU_SPA16_PERC, TEMP_sup_naz[,c(1,3:5)], by = "NUTS0_CODE", all.x = TRUE, all.y = FALSE)
  remove(TEMP_sup_naz)
  
  CODE_EU_27 <- c("BE",	"BG",	"CZ",	"DK",	"DE",	"EE",	"IE",	"EL",	"ES",	"FR",	"HR",	"IT",	
                  "CY",	"LV",	"LT",	"LU",	"HU",	"MT",	"NL",	"AT",	"PL",	"PT",	"RO",	"SI",	
                  "SK",	"FI",	"SE")
  DB_EU_SPA16_PERC <- DB_EU_SPA16_PERC[DB_EU_SPA16_PERC$NUTS0_CODE %in% CODE_EU_27,]
  remove(CODE_EU_27) 
  
  attach(DB_EU_SPA16_PERC)
  DB_EU_SPA16_PERC$PERC_F0000 <- F0000/F0000_naz
  DB_EU_SPA16_PERC$PERC_F1000 <- F1000/F0000_naz
  DB_EU_SPA16_PERC$PERC_F2000 <- F2000/F0000_naz
  DB_EU_SPA16_PERC$PERC_F3000 <- F3000/F0000_naz
  DB_EU_SPA16_PERC$PERC_F4000 <- F4000/F0000_naz
  
  DB_EU_SPA16_PERC$PERC_W1000      <- W1000/W1000_naz
  DB_EU_SPA16_PERC$PERC_W1110_1120 <- W1110_1120/W1000_naz
  DB_EU_SPA16_PERC$PERC_W1190      <- W1190/W1000_naz
  DB_EU_SPA16_PERC$PERC_W1200      <- W1200/W1000_naz
  DB_EU_SPA16_PERC$PERC_W1300      <- W1300/W1000_naz
  
  DB_EU_SPA16_PERC$PERC_O1000 <- O1000/O1000_naz
  DB_EU_SPA16_PERC$PERC_O1100 <- O1100/O1000_naz
  DB_EU_SPA16_PERC$PERC_O1910 <- O1910/O1000_naz
  detach(DB_EU_SPA16_PERC)
  
  attach(DB_EU_SPA16_PERC)
  DB_EU_SPA16_PERC$PERC_F0000      <- ifelse(F0000_naz==0 & is.na(PERC_F0000)==TRUE     , 0, PERC_F0000)
  DB_EU_SPA16_PERC$PERC_F1000      <- ifelse(F0000_naz==0 & is.na(PERC_F1000)==TRUE     , 0, PERC_F1000)
  DB_EU_SPA16_PERC$PERC_F2000      <- ifelse(F0000_naz==0 & is.na(PERC_F2000)==TRUE     , 0, PERC_F2000)
  DB_EU_SPA16_PERC$PERC_F3000      <- ifelse(F0000_naz==0 & is.na(PERC_F3000)==TRUE     , 0, PERC_F3000)
  DB_EU_SPA16_PERC$PERC_F4000      <- ifelse(F0000_naz==0 & is.na(PERC_F4000)==TRUE     , 0, PERC_F4000)
  DB_EU_SPA16_PERC$PERC_W1000      <- ifelse(W1000_naz==0 & is.na(PERC_W1000)==TRUE     , 0, PERC_W1000)
  DB_EU_SPA16_PERC$PERC_W1110_1120 <- ifelse(W1000_naz==0 & is.na(PERC_W1110_1120)==TRUE, 0, PERC_W1110_1120)
  DB_EU_SPA16_PERC$PERC_W1190      <- ifelse(W1000_naz==0 & is.na(PERC_W1190)==TRUE     , 0, PERC_W1190)
  DB_EU_SPA16_PERC$PERC_W1200      <- ifelse(W1000_naz==0 & is.na(PERC_W1200)==TRUE     , 0, PERC_W1200)
  DB_EU_SPA16_PERC$PERC_W1300      <- ifelse(W1000_naz==0 & is.na(PERC_W1300)==TRUE     , 0, PERC_W1300)
  DB_EU_SPA16_PERC$PERC_O1000      <- ifelse(O1000_naz==0 & is.na(PERC_O1000)==TRUE     , 0, PERC_O1000)
  DB_EU_SPA16_PERC$PERC_O1100      <- ifelse(O1000_naz==0 & is.na(PERC_O1100)==TRUE     , 0, PERC_O1100)
  DB_EU_SPA16_PERC$PERC_O1910      <- ifelse(O1000_naz==0 & is.na(PERC_O1910)==TRUE     , 0, PERC_O1910)
  detach(DB_EU_SPA16_PERC)
  
  DB_EU_SPA16_PERC[sapply(DB_EU_SPA16_PERC, is.infinite)] <- NA
  DB_EU_SPA16_PERC[sapply(DB_EU_SPA16_PERC, is.nan)] <- NA
  
  DB_EU_SPA16_PERC <- DB_EU_SPA16_PERC[,c(1:4,21:33)]
  DB_EU_SPA16_PERC <- melt(DB_EU_SPA16_PERC, id = c("NUTS0_CODE","NUTS0_NAME","NUTS2_CODE","NUTS2_NAME"))
  colnames(DB_EU_SPA16_PERC)[5:6] <- c("CROP_CODE","PERC_SPA16")
  DB_EU_SPA16_PERC$CROP_CODE <- gsub("PERC_", "", DB_EU_SPA16_PERC$CROP_CODE)
  
  DB_EU_SPA16_PERC$CROP_CODE_2[substr(DB_EU_SPA16_PERC$CROP_CODE,1,1)=="F"] <- "F0000"
  DB_EU_SPA16_PERC$CROP_CODE_2[substr(DB_EU_SPA16_PERC$CROP_CODE,1,1)=="O"] <- "O1000"
  DB_EU_SPA16_PERC$CROP_CODE_2[substr(DB_EU_SPA16_PERC$CROP_CODE,1,1)=="W"] <- "W1000"
  table(DB_EU_SPA16_PERC$CROP_CODE_2)
  
  TEMP_17 <- data.frame(YEAR = 2017, DB_EU_SPA16_PERC)
  TEMP_18 <- data.frame(YEAR = 2018, DB_EU_SPA16_PERC)
  TEMP_19 <- data.frame(YEAR = 2019, DB_EU_SPA16_PERC)
  TEMP_20 <- data.frame(YEAR = 2020, DB_EU_SPA16_PERC)
  TEMP_21 <- data.frame(YEAR = 2021, DB_EU_SPA16_PERC)
  DB_EU_SPA16_PERC <- rbind(TEMP_17, TEMP_18, TEMP_19, TEMP_20, TEMP_21)
  remove(TEMP_17, TEMP_18, TEMP_19, TEMP_20, TEMP_21)
  
  CODE_EU_27 <- c("BE",	"BG",	"CZ",	"DK",	"DE",	"EE",	"IE",	"EL",	"ES",	"FR",	"HR",	"IT",	
                  "CY",	"LV",	"LT",	"LU",	"HU",	"MT",	"NL",	"AT",	"PL",	"PT",	"RO",	"SI",	
                  "SK",	"FI",	"SE")
  DB_EU_SPA16_PERC <- DB_EU_SPA16_PERC[DB_EU_SPA16_PERC$NUTS0_CODE %in% CODE_EU_27,]
  colnames(DB_EU_SPA16_PERC)[8] <- "CROP_CODE_MACRO_COLT"
  remove(CODE_EU_27)
  
  temp_DB <- subset(DATABASE, select = c("YEAR","NUTS0_CODE","NUTS2_CODE","CROP_CODE","AREA",
                                         "PROD","SAU"))
  
  temp_sup_naz <- subset(temp_DB, temp_DB$CROP_CODE=="F0000" | temp_DB$CROP_CODE=="O1000" | temp_DB$CROP_CODE=="W1000")
  temp_sup_naz <- subset(temp_sup_naz, nchar(temp_sup_naz$NUTS2_CODE)==2)
  temp_sup_naz <- subset(temp_sup_naz, is.na(temp_sup_naz$AREA)==FALSE & is.na(temp_sup_naz$PROD)==FALSE)
  
  DB_EU_SPA16_PERC <- merge(DB_EU_SPA16_PERC, temp_sup_naz[,c(1,2,4,5:7)], by.x = c("YEAR","NUTS0_CODE","CROP_CODE_MACRO_COLT"), by.y = c("YEAR","NUTS0_CODE","CROP_CODE"), all.x = TRUE, all.y = FALSE)
  
  #Crop estimate calculation SPA16
  DB_EU_SPA16_PERC$AREA_estmt_SPA16 <- DB_EU_SPA16_PERC$AREA*DB_EU_SPA16_PERC$PERC_SPA16
  DB_EU_SPA16_PERC$PROD_estmt_SPA16 <- DB_EU_SPA16_PERC$PROD*DB_EU_SPA16_PERC$PERC_SPA16
  DB_EU_SPA16_PERC$SAU_estmt_SPA16 <- DB_EU_SPA16_PERC$SAU*DB_EU_SPA16_PERC$PERC_SPA16
  DB_EU_SPA16_PERC <- DB_EU_SPA16_PERC[,c(1:7,12:14)]
  colnames(DB_EU_SPA16_PERC)[8:10] <- c("AREA","PROD","SAU")
  
  attach(DB_EU_SPA16_PERC)
  DB_EU_SPA16_PERC$FLAG_AREA <- ifelse(CROP_CODE!="F0000" & CROP_CODE!="O1000" & CROP_CODE!="W1000", "estmt_FSS16", "")
  DB_EU_SPA16_PERC$FLAG_PROD <- ifelse(CROP_CODE!="F0000" & CROP_CODE!="O1000" & CROP_CODE!="W1000", "estmt_FSS16", "")
  DB_EU_SPA16_PERC$FLAG_SAU  <- ifelse(CROP_CODE!="F0000" & CROP_CODE!="O1000" & CROP_CODE!="W1000", "estmt_FSS16", "")
  DB_EU_SPA16_PERC <- DB_EU_SPA16_PERC[order(DB_EU_SPA16_PERC$NUTS0_CODE, DB_EU_SPA16_PERC$YEAR, DB_EU_SPA16_PERC$CROP_CODE),]
  detach(DB_EU_SPA16_PERC)
  
  DB_EU_SPA16_PERC$CROP_NAME <- ""
  
  DB_EU_SPA16_PERC$CROP_NAME <- ifelse(DB_EU_SPA16_PERC$CROP_CODE=="F0000",	"Fruits, berries and nuts (excluding citrus fruits, grapes and strawberries [F0000])", DB_EU_SPA16_PERC$CROP_NAME)
  DB_EU_SPA16_PERC$CROP_NAME <- ifelse(DB_EU_SPA16_PERC$CROP_CODE=="W1000",	"Grapes [W1000]", DB_EU_SPA16_PERC$CROP_NAME)
  DB_EU_SPA16_PERC$CROP_NAME <- ifelse(DB_EU_SPA16_PERC$CROP_CODE=="O1000",	"Olives [O1000]", DB_EU_SPA16_PERC$CROP_NAME)
  
  DB_EU_SPA16_PERC$CROP_NAME <- ifelse(DB_EU_SPA16_PERC$CROP_CODE=="F1000",	"Fruits from temperate climate zones [F1000]", DB_EU_SPA16_PERC$CROP_NAME)
  DB_EU_SPA16_PERC$CROP_NAME <- ifelse(DB_EU_SPA16_PERC$CROP_CODE=="F2000",	"Fruits from subtropical and tropical climate zones [F2000]", DB_EU_SPA16_PERC$CROP_NAME)
  DB_EU_SPA16_PERC$CROP_NAME <- ifelse(DB_EU_SPA16_PERC$CROP_CODE=="F3000",	"Berries (excluding strawberries) [F3000]", DB_EU_SPA16_PERC$CROP_NAME)
  DB_EU_SPA16_PERC$CROP_NAME <- ifelse(DB_EU_SPA16_PERC$CROP_CODE=="F4000",	"Nuts [F4000]", DB_EU_SPA16_PERC$CROP_NAME)
  
  DB_EU_SPA16_PERC$CROP_NAME <- ifelse(DB_EU_SPA16_PERC$CROP_CODE=="W1110_1120",	"Grapes for wines with geographical indication (PDO/PGI) [W1110_1120]", DB_EU_SPA16_PERC$CROP_NAME)
  DB_EU_SPA16_PERC$CROP_NAME <- ifelse(DB_EU_SPA16_PERC$CROP_CODE=="W1190",	"Grapes for other wines n.e.c. (without PDO/PGI) [W1190]", DB_EU_SPA16_PERC$CROP_NAME)
  DB_EU_SPA16_PERC$CROP_NAME <- ifelse(DB_EU_SPA16_PERC$CROP_CODE=="W1200",	"Grapes for table use [W1200]", DB_EU_SPA16_PERC$CROP_NAME)
  DB_EU_SPA16_PERC$CROP_NAME <- ifelse(DB_EU_SPA16_PERC$CROP_CODE=="W1300",	"Grapes for raisins [W1300]", DB_EU_SPA16_PERC$CROP_NAME)
  
  DB_EU_SPA16_PERC$CROP_NAME <- ifelse(DB_EU_SPA16_PERC$CROP_CODE=="O1100",	"Olives for table use [O1100]", DB_EU_SPA16_PERC$CROP_NAME)
  DB_EU_SPA16_PERC$CROP_NAME <- ifelse(DB_EU_SPA16_PERC$CROP_CODE=="O1910",	"Olives for oil [O1910]", DB_EU_SPA16_PERC$CROP_NAME)
  
  table(DB_EU_SPA16_PERC$CROP_NAME)  
  
  DB_EU_SPA16_PERC$CROP_CODE_MACRO <- NULL
  remove(temp_sup_naz)
  
  #Calculation of average 5yr SPA16 data and Database integration 
  temp_avg <- ddply(DB_EU_SPA16_PERC, c("NUTS2_CODE", "CROP_CODE"), summarise,
                    AREA_5YR_AVG = round(mean(AREA, na.rm = TRUE), 2),
                    FREQ_AREA_5YR_AVG = sum(is.na(AREA)==FALSE),
                    PROD_5YR_AVG = round(mean(PROD, na.rm = TRUE), 2),
                    FREQ_PROD_5YR_AVG = sum(is.na(PROD)==FALSE),
                    SAU_5YR_AVG  = round(mean(SAU, na.rm = TRUE), 2),
                    FREQ_SAU_5YR_AVG = sum(is.na(SAU)==FALSE))
  
  temp_avg$FREQ_AREA_5YR_AVG[is.nan(temp_avg$AREA_5YR_AVG)] <- NA
  temp_avg$AREA_5YR_AVG[is.nan(temp_avg$AREA_5YR_AVG)] <- NA
  
  temp_avg$FREQ_PROD_5YR_AVG[is.nan(temp_avg$PROD_5YR_AVG)] <- NA
  temp_avg$PROD_5YR_AVG[is.nan(temp_avg$PROD_5YR_AVG)] <- NA
  
  temp_avg$FREQ_SAU_5YR_AVG[is.nan(temp_avg$SAU_5YR_AVG)] <- NA
  temp_avg$SAU_5YR_AVG[is.nan(temp_avg$SAU_5YR_AVG)] <- NA
  
  DB_EU_SPA16_PERC <- merge(DB_EU_SPA16_PERC, temp_avg, by = c("NUTS2_CODE", "CROP_CODE"), all.x = TRUE, all.y = FALSE)  
  remove(temp_avg)
  
  DB_EU_SPA16_PERC$PERC_AREA_SAU <- round(DB_EU_SPA16_PERC$AREA/DB_EU_SPA16_PERC$SAU*100, 2)
  
  attach(DB_EU_SPA16_PERC)
  DB_EU_SPA16_PERC$SOURCE_CODE <- ifelse(CROP_CODE!="F0000" & CROP_CODE!="O1000" & CROP_CODE!="W1000", "[EF_LUS_ALLCROPS]","")
  DB_EU_SPA16_PERC$SOURCE_LINK <- ifelse(CROP_CODE!="F0000" & CROP_CODE!="O1000" & CROP_CODE!="W1000", "https://ec.europa.eu/eurostat/databrowser/view/EF_LUS_ALLCROPS__custom_4951867/default/table?lang=en","")
  DB_EU_SPA16_PERC$SOURCE_NAME <- ifelse(CROP_CODE!="F0000" & CROP_CODE!="O1000" & CROP_CODE!="W1000", "Crops by classes of utilised agricultural area in number of farms and hectare by NUTS 2 regions","")
  detach(DB_EU_SPA16_PERC)
  
  attach(DB_EU_SPA16_PERC)
  DB_EU_SPA16_PERC <- subset(DB_EU_SPA16_PERC, SOURCE_NAME!="" & SOURCE_LINK!="" & SOURCE_CODE!="")
  detach(DB_EU_SPA16_PERC)
  
  #Matching Administrative AREA to SPA16 
  DB_EU_SPA16_PERC <- merge(DB_EU_SPA16_PERC, TOTAL_AREA[,c(1,3)], by = "NUTS2_CODE", all.x = TRUE, all.y = FALSE)
  
  DB_EU_SPA16_PERC$LEVEL_NUTS <- nchar(DB_EU_SPA16_PERC$NUTS2_CODE)
  DB_EU_SPA16_PERC$LEVEL_NUTS [DB_EU_SPA16_PERC$LEVEL_NUTS==2] <- "NUTS0"
  DB_EU_SPA16_PERC$LEVEL_NUTS [DB_EU_SPA16_PERC$LEVEL_NUTS==3] <- "NUTS1"
  DB_EU_SPA16_PERC$LEVEL_NUTS [DB_EU_SPA16_PERC$LEVEL_NUTS==4] <- "NUTS2"
  table(DB_EU_SPA16_PERC$LEVEL_NUTS)
  
  colnames(DB_EU_SPA16_PERC)
  colnames(DATABASE)
  DB_EU_SPA16_PERC$PERC_AREA_totAREA <- round((DB_EU_SPA16_PERC$AREA/DB_EU_SPA16_PERC$TOTAL_AREA)*100, 5)
  remove(TOTAL_AREA)
  
#7.SPA_2016 ALIGNMENT FOR APPEND IN DATABASE ================================================================================================================
  DB_EU_SPA16_PERC <- subset(DB_EU_SPA16_PERC, select = colnames(DATABASE))  
  
  names(DATABASE) == names(DB_EU_SPA16_PERC)  
  
  DATABASE_final <- rbind(DATABASE, DB_EU_SPA16_PERC)
  
  DATABASE_final <- DATABASE_final[order(DATABASE_final$NUTS2_CODE, DATABASE_final$CROP_CODE, DATABASE_final$YEAR),]
  
  DATABASE_final <- merge(DATABASE_final, TEMP[,c(1,3:7)], by = c("NUTS2_CODE","CROP_CODE"), all.x = TRUE, all.y = FALSE)
  
  DATABASE_final <- subset(DATABASE_final, select = c("YEAR","NUTS0_CODE","NUTS0_NAME","NUTS2_CODE","NUTS2_NAME","LEVEL_NUTS","CROP_CODE","CROP_NAME",       
                                                      "AREA","FLAG_AREA","AREA_5YR_AVG","FREQ_AREA_5YR_AVG",
                                                      "PROD","FLAG_PROD","PROD_5YR_AVG","FREQ_PROD_5YR_AVG",    
                                                      "SAU","FLAG_SAU","SAU_5YR_AVG","FREQ_SAU_5YR_AVG",
                                                      "PERC_AREA_SAU","MEAN_PERC_AREA_SAU","FREQ_PERC_AREA_SAU",
                                                      "TOTAL_AREA","PERC_AREA_totAREA","MEAN_PERC_AREA_totAREA","FREQ_PERC_AREA_totAREA",
                                                      "SOURCE_CODE","SOURCE_LINK","SOURCE_NAME"))
  colnames(DATABASE_final)[1:30] <- c("YEAR","NUTS0_CODE","NUTS0_NAME","NUTS2_CODE","NUTS2_NAME","NUTS_LEVEL","CROP_CODE","CROP_NAME",
                                      "AREA","AREA_FLG","AREA_AV","AREA_FRQ_AV",
                                      "PROD","PROD_FLG","PROD_AV","PROD_FRQ_AV",
                                      "UAA","UAA_FLG","UAA_AV","UAA_FRQ_AV",
                                      "PCR_UAA","PCR_UAA_AV","PCR_UAA_FRQ_AV",
                                      "NUTS_AREA","PCR_NUTS_AREA","PCR_NUTS_AV","PCR_NUTS_FRQ_AV",
                                      "SOURCE_CODE","SOURCE_LINK","SOURCE_NAME")
                
  #Eliminate duplicate rows between spa16 and Database
  DATABASE_final <- DATABASE_final[order(DATABASE_final$NUTS2_CODE, DATABASE_final$CROP_CODE, DATABASE_final$YEAR),]
  
  DATABASE_final$FLAG_del_row <- 0
  for (i in 2:nrow(DATABASE_final)){
       print(i)
       DATABASE_final$FLAG_del_row[i]<- ifelse(DATABASE_final[i,c(1:8)]==DATABASE_final[i-1,c(1:8)] & DATABASE_final$SOURCE_CODE[i]=="[EF_LUS_ALLCROPS]", 1, 0)}
       remove(i)
       
  table(DATABASE_final$FLAG_del_row)
  DATABASE_final <- subset(DATABASE_final, DATABASE_final$FLAG_del_row!=1)
  
  DATABASE_final$PCR_UAA_AV[is.nan(DATABASE_final$PCR_UAA_AV)] <- NA
  DATABASE_final$PCR_NUTS_AV[is.nan(DATABASE_final$PCR_NUTS_AV)] <- NA
  
  TAB_FREQ_DB_final <- ddply(DATABASE_final, c("NUTS2_CODE","CROP_CODE"), summarise,
                             FREQ_AREA = sum(is.na(AREA)==FALSE),
                             FREQ_PROD = sum(is.na(PROD)==FALSE),
                             FREQ_UAA  = sum(is.na(UAA)==FALSE))
  
  table(DATABASE_final$NUTS0_CODE)
  
  TAB_FREQ_NUTS2_CODE <- ddply(unique(DATABASE_final[c(2,4)]), c("NUTS0_CODE"), summarise,
                               FREQ_NUTS2  = length(is.na(NUTS2_CODE)==FALSE))
  
  colnames(DATABASE_final)
  DATABASE_final$FLAG_del_row <- NULL
  
  remove(temp_DB)
  
  #Export final Database Crops
  setwd("C:\\Users\\......\\Data_folder")
  wb <- createWorkbook()
  addWorksheet(wb, sheetName = "DATABASE_Final_Release")
  writeData(wb, sheet = 1, x = DATABASE_final, na.string = NA)
  saveWorkbook(wb, "Database CROPS Eurostat - Final Release.xlsx", overwrite = TRUE)
  remove(wb)
  
  remove(temp_input_CTRL, temp_CTRL_freq_all_nat)
  

 