###############################################################################
###pravljenje boja za kategoricke varijable u leafletu na osnovu sp mape#######
###############################################################################

library(leaflet)
inkluzija_klasteri <- leaflet() %>%
  addTiles()
inkluzija_klasteri
library(sp)
serbiasp <- readRDS("C:/Users/vjovanovic/Desktop/R Udemy/Mapa srbije/srbija.rds")
library(leaflet)





library(readxl)
#ucitavanje podataka za opstine u ekselu

opstineeksel <- read_excel("D:/Vita/Inkluzija predskolsko/Metodologija/opstine_za_r.xlsx")

#u mapi sa poligonima odredjivanje imena opstine kao faktora

serbiasp$NAME_2 <- as.factor(serbiasp$NAME_2)
str(serbiasp@data)
## 'data.frame':    161 obs. of  13 variables:
##  $ GID_0    : chr  "SRB" "SRB" "SRB" "SRB" ...
##  $ NAME_0   : chr  "Serbia" "Serbia" "Serbia" "Serbia" ...
##  $ GID_1    : chr  "SRB.1_1" "SRB.1_1" "SRB.1_1" "SRB.1_1" ...
##  $ NAME_1   : chr  "Borski" "Borski" "Borski" "Borski" ...
##  $ NL_NAME_1: chr  "<U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>" "<U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>" "<U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>" "<U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>" ...
##  $ GID_2    : chr  "SRB.1.1_1" "SRB.1.2_1" "SRB.1.3_1" "SRB.1.4_1" ...
##  $ NAME_2   : Factor w/ 160 levels "Ada","Aleksandrovac",..: 24 48 71 79 39 59 74 95 98 142 ...
##  $ VARNAME_2: chr  NA "Claudia|Kladowo" NA NA ...
##  $ NL_NAME_2: chr  "<U+0411><U+043E><U+0440>" "<U+041A><U+043B><U+0430><U+0434><U+043E><U+0432><U+043E>" "<U+041C><U+0430><U+0458><U+0434><U+0430><U+043D><U+043F><U+0435><U+043A>" "<U+041D><U+0435><U+0433><U+043E><U+0442><U+0438><U+043D>" ...
##  $ TYPE_2   : chr  "Opštine" "Opštine" "Opštine" "Opštine" ...
##  $ ENGTYPE_2: chr  "Town|Municipal" "Town|Municipal" "Town|Municipal" "Town|Municipal" ...
##  $ CC_2     : chr  NA NA NA NA ...
##  $ HASC_2   : chr  NA NA NA NA ...
#promena imena kako bi se baza iz eksela uparila sa sp mapom poligona

opstineeksel$NAME_2 <- opstineeksel$opstina 

#spajanje podataka iz eksel baze i poligona za svaku opštinu

serbia2 <- merge(serbiasp, opstineeksel)

inkluzija_klasteri %>%
  leaflet() %>% 
  addTiles() %>%
  addPolygons(data = serbia2, weight = 0.5)
#kreiranje faktora na osnovu koga se prave boje - topo.colors(5) - broj i vrsta boja

pal <- colorFactor(topo.colors(5), serbia2$klasteri)

inkluzija_klasteri %>%
  addPolygons(data = serbia2, weight = 0.5, stroke = FALSE, 
              smoothFactor = 0.2, fillOpacity = 0.5, color = ~pal(serbia2$klasteri)) %>% 
  addLegend(pal = pal, values = serbia2$klasteri, title = "Klasteri opština prema uticaju na inkluzivnost",
            labFormat = labelFormat(prefix = "Klaster - "))
#dodavanje imena pologina kao label

#pronalazi centroid regiona i dodeljuje mu ime

library(raster)
library(rgeos)
## rgeos version: 0.4-2, (SVN revision 581)
##  GEOS runtime version: 3.6.1-CAPI-1.10.1 
##  Linking to sp version: 1.3-1 
##  Polygon checking: TRUE
centers <- data.frame(gCentroid(serbia2, byid = TRUE))

#medjutim, da bi se baze uspešno spojile, neophodno je napraviti varijablu v preko koje će se spojiti, pošto funkcija gCentroid brlja

v <- 1:161
centers1 <- cbind(v, centers)
head(centers1)
##       v        x        y
## 98092 1 22.05428 44.07090
## 95590 2 22.47150 44.56863
## 96361 3 22.05799 44.38804
## 98326 4 22.42714 44.24799
## 95582 5 21.74050 44.60884
## 96340 6 21.71469 44.45941
#ista se varijabla kreira i u matičnoj bazi sa poligonima
                      
serbia2 <- cbind(serbia2, v)

head(serbia2)
##       NAME_2 GID_0 NAME_0   GID_1      NAME_1
## 25       Bor   SRB Serbia SRB.1_1      Borski
## 49   Kladovo   SRB Serbia SRB.1_1      Borski
## 72 Majdanpek   SRB Serbia SRB.1_1      Borski
## 80   Negotin   SRB Serbia SRB.1_1      Borski
## 40   Golubac   SRB Serbia SRB.2_1 Braničevski
## 60    Kučevo   SRB Serbia SRB.2_1 Braničevski
##                                                                                   NL_NAME_1
## 25                                         <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 49                                         <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 72                                         <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 80                                         <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 40 <U+0411><U+0440><U+0430><U+043D><U+0438><U+0447><U+0435><U+0432><U+0441><U+043A><U+0438>
## 60 <U+0411><U+0440><U+0430><U+043D><U+0438><U+0447><U+0435><U+0432><U+0441><U+043A><U+0438>
##        GID_2                      VARNAME_2
## 25 SRB.1.1_1                           <NA>
## 49 SRB.1.2_1                Claudia|Kladowo
## 72 SRB.1.3_1                           <NA>
## 80 SRB.1.4_1                           <NA>
## 40 SRB.2.1_1 Galambóc|Golumbácz|Güvercinlik
## 60 SRB.2.2_1                           <NA>
##                                                                   NL_NAME_2
## 25                                                 <U+0411><U+043E><U+0440>
## 49                 <U+041A><U+043B><U+0430><U+0434><U+043E><U+0432><U+043E>
## 72 <U+041C><U+0430><U+0458><U+0434><U+0430><U+043D><U+043F><U+0435><U+043A>
## 80                 <U+041D><U+0435><U+0433><U+043E><U+0442><U+0438><U+043D>
## 40                 <U+0413><U+043E><U+043B><U+0443><U+0431><U+0430><U+0446>
## 60                         <U+041A><U+0443><U+0447><U+0435><U+0432><U+043E>
##     TYPE_2      ENGTYPE_2 CC_2 HASC_2   opstina klasteri X1.161
## 25 Opštine Town|Municipal <NA>   <NA>       Bor        2      1
## 49 Opštine Town|Municipal <NA>   <NA>   Kladovo        1      2
## 72 Opštine Town|Municipal <NA>   <NA> Majdanpek        1      3
## 80 Opštine Town|Municipal <NA>   <NA>   Negotin        1      4
## 40 Opštine Town|Municipal <NA>   <NA>   Golubac        1      5
## 60 Opštine Town|Municipal <NA>   <NA>    Kučevo        1      6
head(serbia2)
##       NAME_2 GID_0 NAME_0   GID_1      NAME_1
## 25       Bor   SRB Serbia SRB.1_1      Borski
## 49   Kladovo   SRB Serbia SRB.1_1      Borski
## 72 Majdanpek   SRB Serbia SRB.1_1      Borski
## 80   Negotin   SRB Serbia SRB.1_1      Borski
## 40   Golubac   SRB Serbia SRB.2_1 Braničevski
## 60    Kučevo   SRB Serbia SRB.2_1 Braničevski
##                                                                                   NL_NAME_1
## 25                                         <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 49                                         <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 72                                         <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 80                                         <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 40 <U+0411><U+0440><U+0430><U+043D><U+0438><U+0447><U+0435><U+0432><U+0441><U+043A><U+0438>
## 60 <U+0411><U+0440><U+0430><U+043D><U+0438><U+0447><U+0435><U+0432><U+0441><U+043A><U+0438>
##        GID_2                      VARNAME_2
## 25 SRB.1.1_1                           <NA>
## 49 SRB.1.2_1                Claudia|Kladowo
## 72 SRB.1.3_1                           <NA>
## 80 SRB.1.4_1                           <NA>
## 40 SRB.2.1_1 Galambóc|Golumbácz|Güvercinlik
## 60 SRB.2.2_1                           <NA>
##                                                                   NL_NAME_2
## 25                                                 <U+0411><U+043E><U+0440>
## 49                 <U+041A><U+043B><U+0430><U+0434><U+043E><U+0432><U+043E>
## 72 <U+041C><U+0430><U+0458><U+0434><U+0430><U+043D><U+043F><U+0435><U+043A>
## 80                 <U+041D><U+0435><U+0433><U+043E><U+0442><U+0438><U+043D>
## 40                 <U+0413><U+043E><U+043B><U+0443><U+0431><U+0430><U+0446>
## 60                         <U+041A><U+0443><U+0447><U+0435><U+0432><U+043E>
##     TYPE_2      ENGTYPE_2 CC_2 HASC_2   opstina klasteri X1.161
## 25 Opštine Town|Municipal <NA>   <NA>       Bor        2      1
## 49 Opštine Town|Municipal <NA>   <NA>   Kladovo        1      2
## 72 Opštine Town|Municipal <NA>   <NA> Majdanpek        1      3
## 80 Opštine Town|Municipal <NA>   <NA>   Negotin        1      4
## 40 Opštine Town|Municipal <NA>   <NA>   Golubac        1      5
## 60 Opštine Town|Municipal <NA>   <NA>    Kučevo        1      6
serbia2$v <- serbia2$X1.161
head(serbia2)
##       NAME_2 GID_0 NAME_0   GID_1      NAME_1
## 25       Bor   SRB Serbia SRB.1_1      Borski
## 49   Kladovo   SRB Serbia SRB.1_1      Borski
## 72 Majdanpek   SRB Serbia SRB.1_1      Borski
## 80   Negotin   SRB Serbia SRB.1_1      Borski
## 40   Golubac   SRB Serbia SRB.2_1 Braničevski
## 60    Kučevo   SRB Serbia SRB.2_1 Braničevski
##                                                                                   NL_NAME_1
## 25                                         <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 49                                         <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 72                                         <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 80                                         <U+0411><U+043E><U+0440><U+0441><U+043A><U+0438>
## 40 <U+0411><U+0440><U+0430><U+043D><U+0438><U+0447><U+0435><U+0432><U+0441><U+043A><U+0438>
## 60 <U+0411><U+0440><U+0430><U+043D><U+0438><U+0447><U+0435><U+0432><U+0441><U+043A><U+0438>
##        GID_2                      VARNAME_2
## 25 SRB.1.1_1                           <NA>
## 49 SRB.1.2_1                Claudia|Kladowo
## 72 SRB.1.3_1                           <NA>
## 80 SRB.1.4_1                           <NA>
## 40 SRB.2.1_1 Galambóc|Golumbácz|Güvercinlik
## 60 SRB.2.2_1                           <NA>
##                                                                   NL_NAME_2
## 25                                                 <U+0411><U+043E><U+0440>
## 49                 <U+041A><U+043B><U+0430><U+0434><U+043E><U+0432><U+043E>
## 72 <U+041C><U+0430><U+0458><U+0434><U+0430><U+043D><U+043F><U+0435><U+043A>
## 80                 <U+041D><U+0435><U+0433><U+043E><U+0442><U+0438><U+043D>
## 40                 <U+0413><U+043E><U+043B><U+0443><U+0431><U+0430><U+0446>
## 60                         <U+041A><U+0443><U+0447><U+0435><U+0432><U+043E>
##     TYPE_2      ENGTYPE_2 CC_2 HASC_2   opstina klasteri X1.161 v
## 25 Opštine Town|Municipal <NA>   <NA>       Bor        2      1 1
## 49 Opštine Town|Municipal <NA>   <NA>   Kladovo        1      2 2
## 72 Opštine Town|Municipal <NA>   <NA> Majdanpek        1      3 3
## 80 Opštine Town|Municipal <NA>   <NA>   Negotin        1      4 4
## 40 Opštine Town|Municipal <NA>   <NA>   Golubac        1      5 5
## 60 Opštine Town|Municipal <NA>   <NA>    Kučevo        1      6 6
serbia2 <- merge(serbia2, centers1)
centers1$region <- row.names(serbia2$NAME_2)
head(centers1)
##       v        x        y
## 98092 1 22.05428 44.07090
## 95590 2 22.47150 44.56863
## 96361 3 22.05799 44.38804
## 98326 4 22.42714 44.24799
## 95582 5 21.74050 44.60884
## 96340 6 21.71469 44.45941
serbia2$NAME_2
##   [1] Bor                 Kladovo             Majdanpek          
##   [4] Negotin             Golubac             Kučevo             
##   [7] Malo Crniće         Petrovac            Požarevac          
##  [10] Veliko Gradište     Žabari              Žagubica           
##  [13] Barajevo            Čukarica            Grocka             
##  [16] Lazarevac           Mladenovac          Novi Beograd       
##  [19] Obrenovac           Palilula            Rakovica           
##  [22] Savski Venac        Sopot               Stari Grad         
##  [25] Surčin              Voždovac            Vračar             
##  [28] Zemun               Zvezdara            Bojnik             
##  [31] Crna Trava          Lebane              Leskovac           
##  [34] Medveđa             Vlasotince          Bač                
##  [37] Bačka Palanka       Bački Petrovac      Bečej              
##  [40] Beočin              Novi Sad            Srbobran           
##  [43] Sremski Karlovci    Temerin             Titel              
##  [46] Vrbas               Žabalj              Alibunar           
##  [49] Bela Crkva          Kovačica            Kovin              
##  [52] Opovo               Pančevo             Plandište          
##  [55] Vršac               Lajkovac            Ljig               
##  [58] Mionica             Osečina             Ub                 
##  [61] Valjevo             Bogatić             Koceljeva          
##  [64] Krupanj             Ljubovija           Loznica            
##  [67] Mali Zvornik        Šabac               Vladimirci         
##  [70] Čačak               Gornji Milanovac    Ivanjica           
##  [73] Lučani              Aleksinac           Doljevac           
##  [76] Gadžin Han          Merošina            Niš                
##  [79] Ražanj              Svrljig             Bosilegrad         
##  [82] Bujanovac           Preševo             Surdulica          
##  [85] Trgovište           Vladičin Han        Vranje             
##  [88] Babušnica           Bela Palanka        Dimitrovgrad       
##  [91] Pirot               Smederevo           Smederevska Palanka
##  [94] Velika Plana        Ćuprija             Despotovac         
##  [97] Jagodina            Paraćin             Rekovac            
## [100] Svilajnac           Aleksandrovac       Brus               
## [103] Ćićevac             Kruševac            Trstenik           
## [106] Varvarin            Kraljevo            Novi Pazar         
## [109] Raška               Tutin               Vrnjačka Banja     
## [112] Bačka Topola        Mali Iđoš           Subotica           
## [115] Ada                 Čoka                Kanjiža            
## [118] Kikinda             Novi Kneževac       Senta              
## [121] Bečej               Nova Crnja          Sečanj             
## [124] Žitište             Zrenjanin           Inđija             
## [127] Irig                Pećinci             Ruma               
## [130] Šid                 Sremska Mitrovica   Stara Pazova       
## [133] Aranđelovac         Batočina            Knić               
## [136] Kragujevac          Lapovo              Rača               
## [139] Topola              Blace               Kuršumlija         
## [142] Prokuplje           Žitorađa            Boljevac           
## [145] Knjaževac           Sokobanja           Zaječar            
## [148] Apatin              Kula                Odžaci             
## [151] Sombor              Arilje              Bajina Bašta       
## [154] Čajetina            Kosjerić            Nova Varoš         
## [157] Požega              Priboj              Prijepolje         
## [160] Sjenica             Užice              
## 160 Levels: Ada Aleksandrovac Aleksinac Alibunar Apatin ... Žitorađa
serbia2$x
##   [1] 22.05428 22.47150 22.05799 22.42714 21.74050 21.71469 21.33513
##   [8] 21.43964 21.19063 21.43645 21.21429 21.73579 20.37143 20.36100
##  [15] 20.65222 20.30086 20.68195 20.36399 20.12751 20.42957 20.43339
##  [22] 20.43464 20.52513 20.44339 20.20525 20.50508 20.46150 20.27038
##  [29] 20.51798 21.68275 22.33635 21.73228 21.95658 21.54954 22.19605
##  [36] 19.13684 19.39426 19.56397 19.95086 19.62041 19.80735 19.80571
##  [43] 19.93563 19.84833 20.16802 19.60518 20.06319 20.93315 21.34307
##  [50] 20.65452 20.99689 20.49091 20.71839 21.05683 21.27148 20.14289
##  [57] 20.27122 20.05658 19.55216 20.00547 19.79832 19.46158 19.73859
##  [64] 19.38042 19.43681 19.32646 19.17110 19.57410 19.80077 20.38067
##  [71] 20.34163 20.19288 20.26473 21.68524 21.84325 22.09023 21.68739
##  [78] 21.93582 21.57126 22.12480 22.37448 21.78519 21.66553 22.29178
##  [85] 22.13081 22.03563 21.96710 22.42946 22.29540 22.77436 22.63671
##  [92] 20.94741 20.88572 21.06806 21.40550 21.54852 21.19509 21.49510
##  [99] 21.07789 21.23267 20.98403 20.97166 21.43481 21.33845 21.03139
## [106] 21.27611 20.61614 20.44430 20.61756 20.27786 20.83503 19.57736
## [113] 19.66947 19.62363 20.01117 20.19982 19.94149 20.43965 20.17044
## [120] 19.94923 20.21023 20.65392 20.79163 20.62231 20.40231 20.09819
## [127] 19.83856 19.98958 19.81499 19.23408 19.53338 20.16263 20.51354
## [134] 21.04130 20.69974 20.84537 21.07246 20.90711 20.67794 21.27167
## [141] 21.22471 21.49669 21.71199 21.89109 22.30555 21.87042 22.27375
## [148] 19.02173 19.43750 19.23636 19.12663 20.01532 19.53743 19.68207
## [155] 19.84799 19.80981 20.01772 19.40001 19.62593 20.00168 19.72207
inkluzija_klasteri %>%
  addPolygons(data = serbia2, weight = 0.5, stroke = FALSE, 
              smoothFactor = 0.2, fillOpacity = 0.5, color = ~pal(serbia2$klasteri)) %>%
  addLabelOnlyMarkers(data = serbia2, lng = ~x, lat=~y, label = ~NAME_2, labelOptions = labelOptions(noHide = TRUE, direction = "top", textOnly = TRUE)) %>% 
  addLegend(pal = pal, values = serbia2$klasteri, title = "Klasteri opština prema uticaju na inkluzivnost",
            labFormat = labelFormat(prefix = "Klaster - "))

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.