library(tidyverse)
library(dplyr)
library(ggplot2)
library(sf)
list.files()
[1] "Antioquia.nb.html"        
[2] "Antioquia.Rmd"            
[3] "EVA.ANTIOQUIA.csv"        
[4] "mapantioquia.nb.html"     
[5] "mapantioquia.Rmd"         
[6] "MGN_MPIO_POLITICO.shp"    
[7] "MGN_MPIO_POLITICO.shp.xml"
mun_antioquia <- sf::st_read("C:/Users/hinca/Documents/(A) Hinca/UNAL/Semestre 5/Geomática/05_ANTIOQUIA/ADMINISTRATIVO/MGN_MPIO_POLITICO.shp")
Reading layer `MGN_MPIO_POLITICO' from data source 
  `C:\Users\hinca\Documents\(A) Hinca\UNAL\Semestre 5\Geomática\05_ANTIOQUIA\ADMINISTRATIVO\MGN_MPIO_POLITICO.shp' 
  using driver `ESRI Shapefile'
Simple feature collection with 125 features and 9 fields
Geometry type: POLYGON
Dimension:     XY
Bounding box:  xmin: -77.12783 ymin: 5.418558 xmax: -73.88128 ymax: 8.873974
Geodetic CRS:  WGS 84
mun_antioquia
Simple feature collection with 125 features and 9 fields
Geometry type: POLYGON
Dimension:     XY
Bounding box:  xmin: -77.12783 ymin: 5.418558 xmax: -73.88128 ymax: 8.873974
Geodetic CRS:  WGS 84
First 10 features:
   DPTO_CCDGO MPIO_CCDGO     MPIO_CNMBR
1          05      05001       MEDELLÍN
2          05      05101 CIUDAD BOLÍVAR
3          05      05107        BRICEÑO
4          05      05113       BURITICÁ
5          05      05120        CÁCERES
6          05      05093        BETULIA
7          05      05091        BETANIA
8          05      05088          BELLO
9          05      05086        BELMIRA
10         05      05079        BARBOSA
                                          MPIO_CRSLC MPIO_NAREA MPIO_NANO
1                                               1965   374.8280      2017
2                                               1869   260.4461      2017
3               Ordenanza 27 de Noviembre 26 de 1980   376.3468      2017
4                                               1812   355.2103      2017
5  Decreto departamental 160 del 16 de Marzo de 1903  1873.8033      2017
6  Decreto departamental 629 del 28 de Enero de 1884   262.3675      2017
7               Ordenanza 42 del 24 de Abril de 1920   180.5260      2017
8                Ordenanza 48 del 29 deAbril de 1913   147.7589      2017
9                                               1814   296.1532      2017
10                                              1812   205.6662      2017
   DPTO_CNMBR Shape_Leng Shape_Area                       geometry
1   ANTIOQUIA  1.0327835 0.03060723 POLYGON ((-75.66974 6.37359...
2   ANTIOQUIA  0.7085039 0.02124224 POLYGON ((-76.04467 5.92774...
3   ANTIOQUIA  1.0044720 0.03078496 POLYGON ((-75.45818 7.22284...
4   ANTIOQUIA  0.9637233 0.02902757 POLYGON ((-75.90857 6.97378...
5   ANTIOQUIA  2.9333643 0.15350440 POLYGON ((-75.20358 7.95716...
6   ANTIOQUIA  0.8476756 0.02141352 POLYGON ((-76.00304 6.28171...
7   ANTIOQUIA  0.6923058 0.01472138 POLYGON ((-75.95474 5.79522...
8   ANTIOQUIA  0.6143227 0.01206804 POLYGON ((-75.58203 6.42510...
9   ANTIOQUIA  1.1730035 0.02420036 POLYGON ((-75.69252 6.75917...
10  ANTIOQUIA  0.7700180 0.01680390 POLYGON ((-75.32148 6.51265...
mun_antioquia$KM2 <- st_area(st_transform(mun_antioquia, 3116))/1E6
mun_antioquia$KM2 <- as.numeric(mun_antioquia$KM2)
mun_antioquia$KM2 <- round(mun_antioquia$KM2,3)
min(mun_antioquia$KM2)
[1] 15.836
max(mun_antioquia$KM2)
[1] 2919.535
library(leaflet)
bins <- c(0, 150, 300, 450, 600, 750, 900, 1200, 1600, 2000, 2400, 2920)
pal <- colorBin("RdYlGn", domain = mun_antioquia$KM2, bins = bins)

  mapa <- leaflet(data = mun_antioquia) %>%
  addTiles() %>%
  addPolygons(label = ~KM2,
              popup = ~MPIO_CNMBR,
              fillColor = ~pal(KM2),
              color = "#444444",
              weight = 1,
              smoothFactor = 0.5,
              opacity = 1.0,
              fillOpacity = 0.5,
              highlightOptions = highlightOptions(color = "white", weight = 2, bringToFront = TRUE)
              ) %>%
  addProviderTiles(providers$OpenStreetMap) %>%
  addLegend("bottomright", pal = pal, values = ~KM2,
    title = "Municipalities extent [Km2] (DANE, 2018)",
    opacity = 1
  )
mapa
NA
class(mun_antioquia$MPIO_CCDGO)
[1] "character"
class(eva_antioquia$COD_MUN)
[1] "NULL"
mun_antioquia$COD_MUN <-  as.double(mun_antioquia$MPIO_CCDGO)
class(mun_antioquia$COD_MUN)
[1] "numeric"
platano_antioquia <- eva_antioquia %>%  filter(CULTI == "PLATANO")  %>%  dplyr::select(MUNI, COD.MUN, ANO, PERIO, PRODUC, RENDI) 
platano_antioquia
NA
head(platano_antioquia)
tail(platano_antioquia)
unique(platano_antioquia$ANO)
 [1] 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018
unique(platano_antioquia$PERIO)
 [1] "2007" "2008" "2009" "2010" "2011" "2012" "2013" "2014" "2015" "2016"
[11] "2017" "2018"
platano_antioquia %>% 
  gather("ANO", "PERIO", "PRODUC", "RENDI" , key = variable, value = number)
platano_antioquia %>% replace(is.na(.), 0) -> platano_antioquia2
platano_antioquia%>% group_by(MUNI, COD.MUN, ANO) %>%
   summarize(PRODUC=sum(PRODUC)) -> platano_antioquia2
`summarise()` has grouped output by 'MUNI', 'COD.MUN'. You can override using the `.groups` argument.
platano_antioquia2 %>% 
  group_by(COD.MUN) %>% 
  gather("PRODUC", key = variable, value = number)   %>% 
  unite(combi, variable, ANO) %>%
  pivot_wider(names_from = combi, values_from = number, values_fill = 0) ->                                                                    platano_antioquia3
head
head(platano_antioquia3)
tail(platano_antioquia3)
summary(platano_antioquia3)
     MUNI              COD.MUN      PRODUC_2007      PRODUC_2008      
 Length:107         Min.   :5001   Min.   :     0   Min.   :     0.0  
 Class :character   1st Qu.:5144   1st Qu.:   114   1st Qu.:    91.5  
 Mode  :character   Median :5380   Median :   434   Median :   450.0  
                    Mean   :5422   Mean   :  3367   Mean   :  3401.0  
                    3rd Qu.:5662   3rd Qu.:  1676   3rd Qu.:  1502.0  
                    Max.   :5895   Max.   :159389   Max.   :164787.0  
  PRODUC_2009      PRODUC_2010      PRODUC_2011        PRODUC_2012      
 Min.   :     0   Min.   :     0   Min.   :     0.0   Min.   :     0.0  
 1st Qu.:    92   1st Qu.:   114   1st Qu.:    92.5   1st Qu.:   112.5  
 Median :   532   Median :   532   Median :   455.0   Median :   520.0  
 Mean   :  3383   Mean   :  3442   Mean   :  3489.1   Mean   :  3782.1  
 3rd Qu.:  1524   3rd Qu.:  1717   3rd Qu.:  1939.0   3rd Qu.:  1700.0  
 Max.   :166783   Max.   :167023   Max.   :176740.0   Max.   :178200.0  
  PRODUC_2013        PRODUC_2014        PRODUC_2015      PRODUC_2016    
 Min.   :     0.0   Min.   :     0.0   Min.   :     0   Min.   :     0  
 1st Qu.:   121.5   1st Qu.:   115.5   1st Qu.:   123   1st Qu.:   138  
 Median :   618.0   Median :   630.0   Median :   655   Median :   509  
 Mean   :  3723.8   Mean   :  3951.8   Mean   :  4827   Mean   :  4232  
 3rd Qu.:  1723.0   3rd Qu.:  1991.0   3rd Qu.:  2524   3rd Qu.:  1754  
 Max.   :165244.0   Max.   :149032.0   Max.   :221681   Max.   :187726  
  PRODUC_2017      PRODUC_2018    
 Min.   :     0   Min.   :     0  
 1st Qu.:   137   1st Qu.:   159  
 Median :   531   Median :   648  
 Mean   :  4094   Mean   :  4403  
 3rd Qu.:  1676   3rd Qu.:  1925  
 Max.   :165719   Max.   :166628  
mun_antioquia_platano = left_join(mun_antioquia, platano_antioquia3, by="COD.MUN")
Error: Join columns must be present in data.
x Problem with `COD.MUN`.
Run `rlang::last_error()` to see where the error occurred.
plot(cars)
LS0tDQp0aXRsZTogIkVzdHVkaW8gRVZBIEFudGlvcXVpYSINCkF1dG9yZXM6ICJNYXLDrWEgU2FudGFmZSB5IEFuZHLDqXMgSGluY2FwacOpIg0KRmVjaGE6ICIxMC4xMS4yMDIxIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQoNCi0tLQ0KYGBge3J9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KHNmKQ0KYGBgDQpgYGB7cn0NCmxpc3QuZmlsZXMoKQ0KYGBgDQoNCmBgYHtyfQ0KbXVuX2FudGlvcXVpYSA8LSBzZjo6c3RfcmVhZCgiQzovVXNlcnMvaGluY2EvRG9jdW1lbnRzLyhBKSBIaW5jYS9VTkFML1NlbWVzdHJlIDUvR2VvbcOhdGljYS8wNV9BTlRJT1FVSUEvQURNSU5JU1RSQVRJVk8vTUdOX01QSU9fUE9MSVRJQ08uc2hwIikNCmBgYA0KYGBge3J9DQptdW5fYW50aW9xdWlhDQpgYGANCmBgYHtyfQ0KbXVuX2FudGlvcXVpYSRLTTIgPC0gc3RfYXJlYShzdF90cmFuc2Zvcm0obXVuX2FudGlvcXVpYSwgMzExNikpLzFFNg0KYGBgDQpgYGB7cn0NCm11bl9hbnRpb3F1aWEkS00yIDwtIGFzLm51bWVyaWMobXVuX2FudGlvcXVpYSRLTTIpDQpgYGANCmBgYHtyfQ0KbXVuX2FudGlvcXVpYSRLTTIgPC0gcm91bmQobXVuX2FudGlvcXVpYSRLTTIsMykNCg0KYGBgDQpgYGB7cn0NCm1pbihtdW5fYW50aW9xdWlhJEtNMikNCmBgYA0KYGBge3J9DQptYXgobXVuX2FudGlvcXVpYSRLTTIpDQpgYGANCmBgYHtyfQ0KbGlicmFyeShsZWFmbGV0KQ0KYmlucyA8LSBjKDAsIDE1MCwgMzAwLCA0NTAsIDYwMCwgNzUwLCA5MDAsIDEyMDAsIDE2MDAsIDIwMDAsIDI0MDAsIDI5MjApDQpwYWwgPC0gY29sb3JCaW4oIlJkWWxHbiIsIGRvbWFpbiA9IG11bl9hbnRpb3F1aWEkS00yLCBiaW5zID0gYmlucykNCg0KICBtYXBhIDwtIGxlYWZsZXQoZGF0YSA9IG11bl9hbnRpb3F1aWEpICU+JQ0KICBhZGRUaWxlcygpICU+JQ0KICBhZGRQb2x5Z29ucyhsYWJlbCA9IH5LTTIsDQogICAgICAgICAgICAgIHBvcHVwID0gfk1QSU9fQ05NQlIsDQogICAgICAgICAgICAgIGZpbGxDb2xvciA9IH5wYWwoS00yKSwNCiAgICAgICAgICAgICAgY29sb3IgPSAiIzQ0NDQ0NCIsDQogICAgICAgICAgICAgIHdlaWdodCA9IDEsDQogICAgICAgICAgICAgIHNtb290aEZhY3RvciA9IDAuNSwNCiAgICAgICAgICAgICAgb3BhY2l0eSA9IDEuMCwNCiAgICAgICAgICAgICAgZmlsbE9wYWNpdHkgPSAwLjUsDQogICAgICAgICAgICAgIGhpZ2hsaWdodE9wdGlvbnMgPSBoaWdobGlnaHRPcHRpb25zKGNvbG9yID0gIndoaXRlIiwgd2VpZ2h0ID0gMiwgYnJpbmdUb0Zyb250ID0gVFJVRSkNCiAgICAgICAgICAgICAgKSAlPiUNCiAgYWRkUHJvdmlkZXJUaWxlcyhwcm92aWRlcnMkT3BlblN0cmVldE1hcCkgJT4lDQogIGFkZExlZ2VuZCgiYm90dG9tcmlnaHQiLCBwYWwgPSBwYWwsIHZhbHVlcyA9IH5LTTIsDQogICAgdGl0bGUgPSAiTXVuaWNpcGFsaXRpZXMgZXh0ZW50IFtLbTJdIChEQU5FLCAyMDE4KSIsDQogICAgb3BhY2l0eSA9IDENCiAgKQ0KYGBgDQpgYGB7cn0NCm1hcGENCg0KYGBgDQoNCmBgYHtyfQ0KY2xhc3MobXVuX2FudGlvcXVpYSRNUElPX0NDREdPKQ0KYGBgDQpgYGB7cn0NCmNsYXNzKGV2YV9hbnRpb3F1aWEkQ09EX01VTikNCmBgYA0KYGBge3J9DQptdW5fYW50aW9xdWlhJENPRF9NVU4gPC0gIGFzLmRvdWJsZShtdW5fYW50aW9xdWlhJE1QSU9fQ0NER08pDQpgYGANCmBgYHtyfQ0KY2xhc3MobXVuX2FudGlvcXVpYSRDT0RfTVVOKQ0KYGBgDQpgYGB7cn0NCnBsYXRhbm9fYW50aW9xdWlhIDwtIGV2YV9hbnRpb3F1aWEgJT4lICBmaWx0ZXIoQ1VMVEkgPT0gIlBMQVRBTk8iKSAgJT4lICBkcGx5cjo6c2VsZWN0KE1VTkksIENPRC5NVU4sIEFOTywgUEVSSU8sIFBST0RVQywgUkVOREkpIA0KYGBgDQpgYGB7cn0NCnBsYXRhbm9fYW50aW9xdWlhDQoNCmBgYA0KYGBge3J9DQpoZWFkKHBsYXRhbm9fYW50aW9xdWlhKQ0KYGBgDQpgYGB7cn0NCnRhaWwocGxhdGFub19hbnRpb3F1aWEpDQpgYGANCmBgYHtyfQ0KdW5pcXVlKHBsYXRhbm9fYW50aW9xdWlhJEFOTykNCmBgYA0KYGBge3J9DQp1bmlxdWUocGxhdGFub19hbnRpb3F1aWEkUEVSSU8pDQpgYGANCmBgYHtyfQ0KcGxhdGFub19hbnRpb3F1aWEgJT4lIA0KICBnYXRoZXIoIkFOTyIsICJQRVJJTyIsICJQUk9EVUMiLCAiUkVOREkiICwga2V5ID0gdmFyaWFibGUsIHZhbHVlID0gbnVtYmVyKQ0KYGBgDQpgYGB7cn0NCnBsYXRhbm9fYW50aW9xdWlhICU+JSByZXBsYWNlKGlzLm5hKC4pLCAwKSAtPiBwbGF0YW5vX2FudGlvcXVpYTINCmBgYA0KYGBge3J9DQpwbGF0YW5vX2FudGlvcXVpYSU+JSBncm91cF9ieShNVU5JLCBDT0QuTVVOLCBBTk8pICU+JQ0KICAgc3VtbWFyaXplKFBST0RVQz1zdW0oUFJPRFVDKSkgLT4gcGxhdGFub19hbnRpb3F1aWEyDQpgYGANCmBgYHtyfQ0KcGxhdGFub19hbnRpb3F1aWEyICU+JSANCiAgZ3JvdXBfYnkoQ09ELk1VTikgJT4lIA0KICBnYXRoZXIoIlBST0RVQyIsIGtleSA9IHZhcmlhYmxlLCB2YWx1ZSA9IG51bWJlcikgICAlPiUgDQogIHVuaXRlKGNvbWJpLCB2YXJpYWJsZSwgQU5PKSAlPiUNCiAgcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9IGNvbWJpLCB2YWx1ZXNfZnJvbSA9IG51bWJlciwgdmFsdWVzX2ZpbGwgPSAwKSAtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGFub19hbnRpb3F1aWEzDQpgYGANCmBgYHtyfQ0KaGVhZA0KYGBgDQoNCmBgYHtyfQ0KaGVhZChwbGF0YW5vX2FudGlvcXVpYTMpDQpgYGANCmBgYHtyfQ0KdGFpbChwbGF0YW5vX2FudGlvcXVpYTMpDQpgYGANCmBgYHtyfQ0Kc3VtbWFyeShwbGF0YW5vX2FudGlvcXVpYTMpDQpgYGANCg0KYGBge3J9DQptdW5fYW50aW9xdWlhX3BsYXRhbm8gPSBsZWZ0X2pvaW4obXVuX2FudGlvcXVpYSwgcGxhdGFub19hbnRpb3F1aWEzLCBieT0iQ09ELk1VTiIpDQpgYGANCg0KYGBge3J9DQpwbG90KGNhcnMpDQpgYGANCg0KDQo=