library(readstata13)
library(dplyr)

Attaching package: 'dplyr'
The following objects are masked from 'package:stats':

    filter, lag
The following objects are masked from 'package:base':

    intersect, setdiff, setequal, union
library(ncdf4)
library(raster)
Loading required package: sp

Attaching package: 'raster'
The following object is masked from 'package:dplyr':

    select
library(sp)
library(rgeos)
rgeos version: 0.3-26, (SVN revision 560)
 GEOS runtime version: 3.5.1-CAPI-1.9.1 r4246 
 Linking to sp version: 1.2-4 
 Polygon checking: TRUE 
library(rgdal)
rgdal: version: 1.2-15, (SVN revision 691)
 Geospatial Data Abstraction Library extensions to R successfully loaded
 Loaded GDAL runtime: GDAL 2.2.2, released 2017/09/15
 Path to GDAL shared files: /usr/share/gdal/2.2
 GDAL binary built with GEOS: TRUE 
 Loaded PROJ.4 runtime: Rel. 4.9.2, 08 September 2015, [PJ_VERSION: 492]
 Path to PROJ.4 shared files: (autodetected)
 Linking to sp version: 1.2-4 
library(dismo)

Read ShapeFile and Raster File.

muni.shp<-readOGR(dsn="gis/shapefiles/conjunto_de_datos/",layer = "areas_geoestadisticas_municipales")
OGR data source with driver: ESRI Shapefile 
Source: "gis/shapefiles/conjunto_de_datos/", layer: "areas_geoestadisticas_municipales"
with 2458 features
It has 3 fields
RASTER_FILE_NAME <- 'gis/noaa_temperatures/air.mon.mean.nc'

DATES <- c(836:838)

r.stack<-stack(RASTER_FILE_NAME,bands=DATES)
r.stack<- rotate(r.stack)

data.frame( rasterToPoints( r.stack ) )
mexico_limits <- extent(-118,-82,14,34)
r.stack <- crop(r.stack, mexico_limits)
print (r.stack)
class       : RasterBrick 
dimensions  : 40, 72, 2880, 3  (nrow, ncol, ncell, nlayers)
resolution  : 0.5, 0.5  (x, y)
extent      : -118, -82, 14, 34  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
data source : in memory
names       : X2017.08.01.01.06.32, X2017.09.01.01.06.32, X2017.10.01.01.06.32 
min values  :               288.13,               286.52,               281.90 
max values  :               314.63,               311.87,               312.26 
#df.r<- as.data.frame(rc,xy=TRUE,optional = TRUE)
plot(r.stack)

Project both Shapefile and Raster on WGS84 and check that they match on the map.

# tranform both data set to longlat
#myshp<- subset(myshp,CVE_ENT=='01')

rgeo <- projectRaster(r.stack, crs='+proj=longlat +datum=WGS84')
pgeo <- spTransform(muni.shp, CRS('+proj=longlat +datum=WGS84'))

# plot on top of Google map
e <- union(extent(rgeo), extent(pgeo))
print(e)
class       : Extent 
xmin        : -120 
xmax        : -80 
ymin        : 12 
ymax        : 36 
g <- gmap(e,lonlat=TRUE)
plot(g, inter=TRUE)

plot(extent(rgeo), add=TRUE, col='red', lwd=2)
plot(pgeo, add=TRUE, col='blue', lwd=2)

kelvins_to_celsius= function(x){
  return (x-273.15)
}
#extraction <-extract(rgeo,pgeo, weights = TRUE, normalizeWeights=TRUE, fun=mean,df=TRUE)
extraction <-extract(rgeo,pgeo,fun=mean,df=TRUE)

extraction <- extraction  %>% mutate_at(vars(-ID),funs(kelvins_to_celsius))


pgeo@data <- data.frame(pgeo@data, means=extraction)

spplot(pgeo, "means.X2017.08.01.01.06.32",lwd=.1,title ='Mean temp (Celsius) for August 2014')

Read and add tariffa to shapefile data :

pgeo@data <- pgeo@data %>% mutate(id = paste(CVE_ENT,CVE_MUN,sep=''))

df.tariffa<-  read.dta13('gis/tariff/Tariffs.dta')
summary(df.tariffa)
     date2           munid           tarifa            year     
 Min.   :600.0   Min.   : 1001   DAC    :167899   Min.   :2010  
 1st Qu.:620.0   1st Qu.:13072   01     :147096   1st Qu.:2011  
 Median :642.0   Median :20119   1B     : 59076   Median :2013  
 Mean   :641.8   Mean   :19113   1A     : 43276   Mean   :2013  
 3rd Qu.:663.0   3rd Qu.:25013   1C     : 34690   3rd Qu.:2015  
 Max.   :683.0   Max.   :99999   1D     : 12743   Max.   :2016  
                                 (Other): 11808                 
     mun                 id                month       
 Length:476588      Length:476588      Min.   : 1.000  
 Class :character   Class :character   1st Qu.: 4.000  
 Mode  :character   Mode  :character   Median : 7.000  
                                       Mean   : 6.512  
                                       3rd Qu.:10.000  
                                       Max.   :12.000  
                                                       
pgeo@data<- left_join(pgeo@data,df.tariffa, by='id')

df.temp.tariffa.munid<-as.data.frame(pgeo@data)
head(df.temp.tariffa.munid)
LS0tCnRpdGxlOiAiQ29tYmluZSBSYXN0ZXIgdGVtcGVyYXR1cmUgd2l0aCBNZXhpY28gbXVuaWNpcGFsaXRpZXMgU2hhcGVmaWxlIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDogaHRtbF9ub3RlYm9vawoKLS0tCgoKYGBge3J9CmxpYnJhcnkocmVhZHN0YXRhMTMpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkobmNkZjQpCmxpYnJhcnkocmFzdGVyKQpsaWJyYXJ5KHNwKQpsaWJyYXJ5KHJnZW9zKQpsaWJyYXJ5KHJnZGFsKQpsaWJyYXJ5KGRpc21vKQpgYGAKIyMgUmVhZCBTaGFwZUZpbGUgYW5kIFJhc3RlciBGaWxlLgpgYGB7cn0KCm11bmkuc2hwPC1yZWFkT0dSKGRzbj0iZ2lzL3NoYXBlZmlsZXMvY29uanVudG9fZGVfZGF0b3MvIixsYXllciA9ICJhcmVhc19nZW9lc3RhZGlzdGljYXNfbXVuaWNpcGFsZXMiKQoKUkFTVEVSX0ZJTEVfTkFNRSA8LSAnZ2lzL25vYWFfdGVtcGVyYXR1cmVzL2Fpci5tb24ubWVhbi5uYycKCkRBVEVTIDwtIGMoODM2OjgzOCkKCnIuc3RhY2s8LXN0YWNrKFJBU1RFUl9GSUxFX05BTUUsYmFuZHM9REFURVMpCnIuc3RhY2s8LSByb3RhdGUoci5zdGFjaykKCmRhdGEuZnJhbWUoIHJhc3RlclRvUG9pbnRzKCByLnN0YWNrICkgKQoKbWV4aWNvX2xpbWl0cyA8LSBleHRlbnQoLTExOCwtODIsMTQsMzQpCnIuc3RhY2sgPC0gY3JvcChyLnN0YWNrLCBtZXhpY29fbGltaXRzKQpwcmludCAoci5zdGFjaykKI2RmLnI8LSBhcy5kYXRhLmZyYW1lKHJjLHh5PVRSVUUsb3B0aW9uYWwgPSBUUlVFKQpwbG90KHIuc3RhY2spCmBgYAoKIyMgUHJvamVjdCBib3RoIFNoYXBlZmlsZSBhbmQgUmFzdGVyICBvbiBXR1M4NCBhbmQgY2hlY2sgdGhhdCB0aGV5IG1hdGNoIG9uIHRoZSBtYXAuCmBgYHtyfQoKIyB0cmFuZm9ybSBib3RoIGRhdGEgc2V0IHRvIGxvbmdsYXQKI215c2hwPC0gc3Vic2V0KG15c2hwLENWRV9FTlQ9PScwMScpCgpyZ2VvIDwtIHByb2plY3RSYXN0ZXIoci5zdGFjaywgY3JzPScrcHJvaj1sb25nbGF0ICtkYXR1bT1XR1M4NCcpCnBnZW8gPC0gc3BUcmFuc2Zvcm0obXVuaS5zaHAsIENSUygnK3Byb2o9bG9uZ2xhdCArZGF0dW09V0dTODQnKSkKCiMgcGxvdCBvbiB0b3Agb2YgR29vZ2xlIG1hcAplIDwtIHVuaW9uKGV4dGVudChyZ2VvKSwgZXh0ZW50KHBnZW8pKQpwcmludChlKQpnIDwtIGdtYXAoZSxsb25sYXQ9VFJVRSkKcGxvdChnLCBpbnRlcj1UUlVFKQpwbG90KGV4dGVudChyZ2VvKSwgYWRkPVRSVUUsIGNvbD0ncmVkJywgbHdkPTIpCnBsb3QocGdlbywgYWRkPVRSVUUsIGNvbD0nYmx1ZScsIGx3ZD0yKQpgYGAKYGBge3J9CmtlbHZpbnNfdG9fY2Vsc2l1cz0gZnVuY3Rpb24oeCl7CiAgcmV0dXJuICh4LTI3My4xNSkKfQpgYGAKCmBgYHtyfQojZXh0cmFjdGlvbiA8LWV4dHJhY3QocmdlbyxwZ2VvLCB3ZWlnaHRzID0gVFJVRSwgbm9ybWFsaXplV2VpZ2h0cz1UUlVFLCBmdW49bWVhbixkZj1UUlVFKQpleHRyYWN0aW9uIDwtZXh0cmFjdChyZ2VvLHBnZW8sZnVuPW1lYW4sZGY9VFJVRSkKCmV4dHJhY3Rpb24gPC0gZXh0cmFjdGlvbiAgJT4lIG11dGF0ZV9hdCh2YXJzKC1JRCksZnVucyhrZWx2aW5zX3RvX2NlbHNpdXMpKQoKCnBnZW9AZGF0YSA8LSBkYXRhLmZyYW1lKHBnZW9AZGF0YSwgbWVhbnM9ZXh0cmFjdGlvbikKCnNwcGxvdChwZ2VvLCAibWVhbnMuWDIwMTcuMDguMDEuMDEuMDYuMzIiLGx3ZD0uMSx0aXRsZSA9J01lYW4gdGVtcCAoQ2Vsc2l1cykgZm9yIEF1Z3VzdCAyMDE0JykKCmBgYAoKIyMgUmVhZCBhbmQgYWRkIHRhcmlmZmEgdG8gc2hhcGVmaWxlIGRhdGEgOgpgYGB7cn0KcGdlb0BkYXRhIDwtIHBnZW9AZGF0YSAlPiUgbXV0YXRlKGlkID0gcGFzdGUoQ1ZFX0VOVCxDVkVfTVVOLHNlcD0nJykpCgpkZi50YXJpZmZhPC0gIHJlYWQuZHRhMTMoJ2dpcy90YXJpZmYvVGFyaWZmcy5kdGEnKQpzdW1tYXJ5KGRmLnRhcmlmZmEpCnBnZW9AZGF0YTwtIGxlZnRfam9pbihwZ2VvQGRhdGEsZGYudGFyaWZmYSwgYnk9J2lkJykKCmRmLnRlbXAudGFyaWZmYS5tdW5pZDwtYXMuZGF0YS5mcmFtZShwZ2VvQGRhdGEpCmhlYWQoZGYudGVtcC50YXJpZmZhLm11bmlkKQpgYGAK