[Descargar - RMarkdown]

Agregar puntos a polígonos

Agregación de puntos por polígonos

Es común que tengamos datos a nivel punto y los queramos agregar a una escala mayor. Generalmente, tenemos datos socioeconómicos a nivel municipal. Por lo tanto, queremos agregar la información a nivel punto a los polígonos. De esta forma, podemos generar variables para incoporar en nuestras regresiones espaciales.

Agregar el número de tiendas que existen dentro de un polígono. En este caso, cuántas tiendas de frutas y verduras existen por municipio en la Zona Metropolitana del Valle de México (incluye Ciudad de México, 59 municipios del estado de México y 1 municipio del estado de Hidalgo).

Vamos a utilizar sf para leer los datos espaciales, hacer transformaciones de proyecciones y hacer intersección entre las tiendas (puntos) y los municipios (polígonos). Primero, para analizar los datos de las tiendas, utilizaremos dplyr, mostrando algunos comandos para explorar y filtrar los datos y después con sf pasar de una tabla csv (no espacial, pero conteniendo las coordenadas de los puntos) a una tabla sf (espacial).

Leer los paquetes estadísticos:

library(data.table)
library(dplyr)
library(sf)
library(ggplot2)
library(tmap)

Importar datos:

#Importar datos espaciales
muni = st_read("./data/mx_city_metro.shp")
## Reading layer `mx_city_metro' from data source 
##   `/Users/irenefarah/Downloads/sp_econ/data/mx_city_metro.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 76 features and 40 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: 2745632 ymin: 774927.1 xmax: 2855437 ymax: 899488.5
## proj4string:   +proj=lcc +lat_1=17.5 +lat_2=29.5 +lat_0=12 +lon_0=-102 +x_0=2500000 +y_0=0 +ellps=GRS80 +units=m +no_defs

Bajar datos de comercio al por menor del DENUE (Directorio Estadístico Nacional de Unidades Económicas) de la página del INEGI (Instituto Nacional de Estadística y Geografía) de México.

Leer datos de comercio al por menor y filtrar por geografías de interés:

#fread lee csv mucho más rápido (data.table)
df=fread("data/denue_inegi_46112-46311_.csv")%>%
  filter(cve_ent==9 | cve_ent==15 | cve_ent==13)# filtrar por entidad federativa (cdmx, hidalgo, edomex)

head(df)
##         id                         clee
## 1: 8117497 09005461140003241000000000U3
## 2:  774758 09005461121003521000000000U8
## 3:  673456 09005461121008721000000000U9
## 4:  743038 09002461150001821000000000U0
## 5:  673369 09005461121009281000000000U3
## 6:  775603 09016461130005491000000000U0
##                                   nom_estab raz_social codigo_act
## 1:                  02 PRODUCTOS NATURISTAS                461140
## 2: 03 CARNICERIA DE CARNES ROJAS SIN NOMBRE                461121
## 3:                  07 TOCINERIA SIN NOMBRE                461121
## 4:                  10 ABARROTES Y CREMERIA                461150
## 5:                        10 TOCINERIA PEPE                461121
## 6:                              101 VERDURA                461130
##                                                                          nombre_act
## 1: Comercio al por menor de semillas y granos alimenticios, especias y chiles secos
## 2:                                            Comercio al por menor de carnes rojas
## 3:                                            Comercio al por menor de carnes rojas
## 4:           Comercio al por menor de leche, otros productos l\xe1cteos y embutidos
## 5:                                            Comercio al por menor de carnes rojas
## 6:                               Comercio al por menor de frutas y verduras frescas
##           per_ocu tipo_vial           nom_vial tipo_v_e_1
## 1: 0 a 5 personas     CALLE       PONIENTE 122      CALLE
## 2: 0 a 5 personas     CALLE       PONIENTE 122      CALLE
## 3: 0 a 5 personas     CALLE       PONIENTE 122      CALLE
## 4: 0 a 5 personas     CALLE                 12      CALLE
## 5: 0 a 5 personas     CALLE       PONIENTE 152   EJE VIAL
## 6: 0 a 5 personas   CALZADA CALZADA DE BECERRA      CALLE
##                  nom_v_e_1 tipo_v_e_2                          nom_v_e_2
## 1:              NORTE 19-A      CALLE                           NORTE 21
## 2:              NORTE 19-A      CALLE                           NORTE 21
## 3:              NORTE 19-A      CALLE                           NORTE 21
## 4:                      21      CALLE                                 19
## 5: CENTRAL LAZARO CARDENAS    AVENIDA MIGUEL OTHON DE MENDIZABAL ORIENTE
## 6:          HEROES DE 1810   VIADUCTO           PRESIDENTE MIGUEL ALEMAN
##    tipo_v_e_3                   nom_v_e_3 numero_ext letra_ext        edificio
## 1:      CALLE                PONIENTE 126         NA        SN MERCADO PUBLICO
## 2:      CALLE                PONIENTE 126         NA        SN MERCADO PUBLICO
## 3:      CALLE                PONIENTE 126         NA        SN MERCADO PUBLICO
## 4:      CALLE                          14         NA        SN MERCADO PUBLICO
## 5:    PRIVADA                     NINGUNO         NA        SN MERCADO PUBLICO
## 6:   VIADUCTO PRESIDENTE MIGUEL ALEM\xc1N         33           MERCADO PUBLICO
##     edificio_e numero_int letra_int tipo_asent                nomb_asent
## 1: PLANTA BAJA         NA              COLONIA             NUEVA VALLEJO
## 2: PLANTA BAJA         NA              COLONIA             NUEVA VALLEJO
## 3: PLANTA BAJA         NA              COLONIA             NUEVA VALLEJO
## 4: PLANTA BAJA         NA              COLONIA                 PRO HOGAR
## 5: PLANTA BAJA         10              COLONIA LINDAVISTA PATERA VALLEJO
## 6: PLANTA BAJA        101              COLONIA                  TACUBAYA
##         tipoCenCom                              nom_CenCom num_local cod_postal
## 1: MERCADO PUBLICO     MERCADO 93 MAGDALENA DE LAS SALINAS        02       7750
## 2: MERCADO PUBLICO     MERCADO 93 MAGDALENA DE LAS SALINAS         3       7750
## 3: MERCADO PUBLICO     MERCADO 93 MAGDALENA DE LAS SALINAS         7       7750
## 4: MERCADO PUBLICO        MERCADO PUBLICO SEDECO PRO HOGAR        10       2600
## 5: MERCADO PUBLICO MERCADO 366-1 LINDAVISTA-VALLEJO-PATERA        10       2300
## 6: MERCADO PUBLICO                     MERCADO DE TACUBAYA       101      11870
##    cve_ent             entidad cve_mun         municipio cve_loc
## 1:       9 Ciudad de M\xe9xico       5 Gustavo A. Madero       1
## 2:       9 Ciudad de M\xe9xico       5 Gustavo A. Madero       1
## 3:       9 Ciudad de M\xe9xico       5 Gustavo A. Madero       1
## 4:       9 Ciudad de M\xe9xico       2      Azcapotzalco       1
## 5:       9 Ciudad de M\xe9xico       5 Gustavo A. Madero       1
## 6:       9 Ciudad de M\xe9xico      16    Miguel Hidalgo       1
##                                                                                                         localidad
## 1: Gustavo A. Madero                                                                                             
## 2: Gustavo A. Madero                                                                                             
## 3: Gustavo A. Madero                                                                                             
## 4: Azcapotzalco                                                                                                  
## 5: Gustavo A. Madero                                                                                             
## 6: Miguel Hidalgo                                                                                                
##    ageb manzana telefono correoelec www tipoUniEco  latitud  longitud
## 1: 1237      13                               Fijo 19.48495 -99.14869
## 2: 1237      13                               Fijo 19.48495 -99.14869
## 3: 1237      13                               Fijo 19.48495 -99.14869
## 4: 0400       5                               Fijo 19.47589 -99.15395
## 5: 0510       1                               Fijo 19.50113 -99.15310
## 6: 1194       9                               Fijo 19.39871 -99.18782
##    fecha_alta
## 1:    2019-11
## 2:    2010-07
## 3:    2014-12
## 4:    2010-07
## 5:    2014-12
## 6:    2010-07

Primero tenemos que examinar el tipo de tiendas en nuestros datos para filtrar por comercio al por menor de frutas y verduras.
Examinar los tipo de tiendas en los datos (codigos SCIAN):

df%>%
  group_by(codigo_act)%>%
  summarise(n=n()) #Ver que tipo de tiendas hay dentro del comercio al por menor
## # A tibble: 19 × 2
##    codigo_act     n
##         <int> <int>
##  1     461121 17898
##  2     461122 22739
##  3     461123  1173
##  4     461130 30134
##  5     461140  6983
##  6     461150 10082
##  7     461160 21450
##  8     461170  5507
##  9     461190 12738
## 10     461211  1711
## 11     461212  2963
## 12     461213  4090
## 13     461220   124
## 14     462111  1288
## 15     462112  7769
## 16     462210   636
## 17     463111  1796
## 18     463112  1446
## 19     463113  5316

Según el código SCIAN:

461121: Comercio al por menor de carnes rojas
461122: Comercio al por menor de carne de aves
461123: Comercio al por menor de pescados y mariscos
461130 Comercio al por menor de frutas y verduras frescas
461140: Comercio al por menor de semillas y granos alimenticios, especias y chiles secos
461150: Comercio al por menor de leche, otros productos lácteos y embutidos
461160: Comercio al por menor de dulces y materias primas para repostería
461170: Comercio al por menor de paletas de hielo y helados
461190: Comercio al por menor de otros alimentos
461211: Comercio al por menor de vinos y licores
461212: Comercio al por menor de cerveza
461213: Comercio al por menor de bebidas no alcohólicas y hielo
461220: Comercio al por menor de cigarros, puros y tabaco
462111: Comercio al por menor en supermercados
462112: Comercio al por menor en minisupers
462210: Comercio al por menor en tiendas departamentales
463111: Comercio al por menor de telas
463112: Comercio al por menor de blancos
463113: Comercio al por menor de artículos de mercería y bonetería

Filtrar los datos por comercio al por menor de frutas y verduras:

fv= df%>%
  filter(codigo_act==461130)

head(fv)
##         id                         clee                            nom_estab
## 1:  775603 09016461130005491000000000U0                          101 VERDURA
## 2: 7802536 09002461130008201000000000U0                       104 VERDULERIA
## 3:  742963 09002461130000071000000000U5             108 VER5DURAS EL BURRITO
## 4:  743108 09002461130003341000000000U9                119 VERDURAS Y FLORES
## 5:  743034 09002461130003911000000000U9 122-113 FRUTAS Y VERDURAS SIN NOMBRE
## 6:  743106 09002461130004291000000000U5                         123 VERDURAS
##    raz_social codigo_act                                         nombre_act
## 1:                461130 Comercio al por menor de frutas y verduras frescas
## 2:                461130 Comercio al por menor de frutas y verduras frescas
## 3:                461130 Comercio al por menor de frutas y verduras frescas
## 4:                461130 Comercio al por menor de frutas y verduras frescas
## 5:                461130 Comercio al por menor de frutas y verduras frescas
## 6:                461130 Comercio al por menor de frutas y verduras frescas
##           per_ocu tipo_vial           nom_vial tipo_v_e_1      nom_v_e_1
## 1: 0 a 5 personas   CALZADA CALZADA DE BECERRA      CALLE HEROES DE 1810
## 2: 0 a 5 personas     CALLE                 12      CALLE             21
## 3: 0 a 5 personas     CALLE                 12      CALLE             21
## 4: 0 a 5 personas     CALLE                 12      CALLE             21
## 5: 0 a 5 personas     CALLE                 12      CALLE             21
## 6: 0 a 5 personas     CALLE                 12      CALLE             21
##    tipo_v_e_2                nom_v_e_2 tipo_v_e_3                   nom_v_e_3
## 1:   VIADUCTO PRESIDENTE MIGUEL ALEMAN   VIADUCTO PRESIDENTE MIGUEL ALEM\xc1N
## 2:      CALLE                       19      CALLE                          14
## 3:      CALLE                       19      CALLE                          14
## 4:      CALLE                       19      CALLE                          14
## 5:      CALLE                       19      CALLE                          14
## 6:      CALLE                       19      CALLE                          14
##    numero_ext letra_ext        edificio  edificio_e numero_int letra_int
## 1:         33           MERCADO PUBLICO PLANTA BAJA        101          
## 2:          0        SN MERCADO PUBLICO PLANTA BAJA          0          
## 3:         NA        SN MERCADO PUBLICO PLANTA BAJA         NA          
## 4:          0        SN MERCADO PUBLICO PLANTA BAJA         11          
## 5:         NA        SN MERCADO PUBLICO PLANTA BAJA        112          
## 6:          0        SN MERCADO PUBLICO PLANTA BAJA         44          
##    tipo_asent nomb_asent      tipoCenCom                       nom_CenCom
## 1:    COLONIA   TACUBAYA MERCADO PUBLICO              MERCADO DE TACUBAYA
## 2:    COLONIA  PRO HOGAR MERCADO PUBLICO MERCADO PUBLICO SEDECO PRO HOGAR
## 3:    COLONIA  PRO HOGAR MERCADO PUBLICO MERCADO PUBLICO SEDECO PRO HOGAR
## 4:    COLONIA  PRO HOGAR MERCADO PUBLICO MERCADO PUBLICO SEDECO PRO HOGAR
## 5:    COLONIA  PRO HOGAR MERCADO PUBLICO MERCADO PUBLICO SEDECO PRO HOGAR
## 6:    COLONIA  PRO HOGAR MERCADO PUBLICO MERCADO PUBLICO SEDECO PRO HOGAR
##    num_local cod_postal cve_ent             entidad cve_mun      municipio
## 1:       101      11870       9 Ciudad de M\xe9xico      16 Miguel Hidalgo
## 2:       104       2600       9 Ciudad de M\xe9xico       2   Azcapotzalco
## 3:       108       2600       9 Ciudad de M\xe9xico       2   Azcapotzalco
## 4:       119       2600       9 Ciudad de M\xe9xico       2   Azcapotzalco
## 5:   112 133       2600       9 Ciudad de M\xe9xico       2   Azcapotzalco
## 6:       123       2600       9 Ciudad de M\xe9xico       2   Azcapotzalco
##    cve_loc
## 1:       1
## 2:       1
## 3:       1
## 4:       1
## 5:       1
## 6:       1
##                                                                                                         localidad
## 1: Miguel Hidalgo                                                                                                
## 2: Azcapotzalco                                                                                                  
## 3: Azcapotzalco                                                                                                  
## 4: Azcapotzalco                                                                                                  
## 5: Azcapotzalco                                                                                                  
## 6: Azcapotzalco                                                                                                  
##    ageb manzana   telefono correoelec www tipoUniEco  latitud  longitud
## 1: 1194       9                                 Fijo 19.39871 -99.18782
## 2: 0400       5                                 Fijo 19.47589 -99.15395
## 3: 0400       5   39469571                      Fijo 19.47589 -99.15395
## 4: 0400       5 5553560394                      Fijo 19.47589 -99.15395
## 5: 0400       5                                 Fijo 19.47589 -99.15395
## 6: 0400       5                                 Fijo 19.47589 -99.15395
##    fecha_alta
## 1:    2010-07
## 2:    2019-11
## 3:    2010-07
## 4:    2010-07
## 5:    2010-07
## 6:    2010-07

Ya que tenemos los datos que queremos, los vamos a convertir de una tabla no espacial a una tabla espacial (sf). De esta forma podemos hacer una intersección entre los puntos y los polígonos. Noten cómo la conversión agrega la columna geometry al final de la tabla.

Pasar de csv a sf:

fv_sf = st_as_sf(df,               # nombre tabla
                     coords = c('longitud', 'latitud'),    # columnas con long y lat
                     crs = 4326, remove = FALSE)              #  CRS, con codigo EPSG

head(fv_sf)
## Simple feature collection with 6 features and 42 fields
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: -99.18782 ymin: 19.39871 xmax: -99.14869 ymax: 19.50113
## CRS:           EPSG:4326
##        id                         clee                                nom_estab
## 1 8117497 09005461140003241000000000U3                  02 PRODUCTOS NATURISTAS
## 2  774758 09005461121003521000000000U8 03 CARNICERIA DE CARNES ROJAS SIN NOMBRE
## 3  673456 09005461121008721000000000U9                  07 TOCINERIA SIN NOMBRE
## 4  743038 09002461150001821000000000U0                  10 ABARROTES Y CREMERIA
## 5  673369 09005461121009281000000000U3                        10 TOCINERIA PEPE
## 6  775603 09016461130005491000000000U0                              101 VERDURA
##   raz_social codigo_act
## 1                461140
## 2                461121
## 3                461121
## 4                461150
## 5                461121
## 6                461130
##                                                                         nombre_act
## 1 Comercio al por menor de semillas y granos alimenticios, especias y chiles secos
## 2                                            Comercio al por menor de carnes rojas
## 3                                            Comercio al por menor de carnes rojas
## 4           Comercio al por menor de leche, otros productos l\xe1cteos y embutidos
## 5                                            Comercio al por menor de carnes rojas
## 6                               Comercio al por menor de frutas y verduras frescas
##          per_ocu tipo_vial           nom_vial tipo_v_e_1
## 1 0 a 5 personas     CALLE       PONIENTE 122      CALLE
## 2 0 a 5 personas     CALLE       PONIENTE 122      CALLE
## 3 0 a 5 personas     CALLE       PONIENTE 122      CALLE
## 4 0 a 5 personas     CALLE                 12      CALLE
## 5 0 a 5 personas     CALLE       PONIENTE 152   EJE VIAL
## 6 0 a 5 personas   CALZADA CALZADA DE BECERRA      CALLE
##                 nom_v_e_1 tipo_v_e_2                          nom_v_e_2
## 1              NORTE 19-A      CALLE                           NORTE 21
## 2              NORTE 19-A      CALLE                           NORTE 21
## 3              NORTE 19-A      CALLE                           NORTE 21
## 4                      21      CALLE                                 19
## 5 CENTRAL LAZARO CARDENAS    AVENIDA MIGUEL OTHON DE MENDIZABAL ORIENTE
## 6          HEROES DE 1810   VIADUCTO           PRESIDENTE MIGUEL ALEMAN
##   tipo_v_e_3                   nom_v_e_3 numero_ext letra_ext        edificio
## 1      CALLE                PONIENTE 126         NA        SN MERCADO PUBLICO
## 2      CALLE                PONIENTE 126         NA        SN MERCADO PUBLICO
## 3      CALLE                PONIENTE 126         NA        SN MERCADO PUBLICO
## 4      CALLE                          14         NA        SN MERCADO PUBLICO
## 5    PRIVADA                     NINGUNO         NA        SN MERCADO PUBLICO
## 6   VIADUCTO PRESIDENTE MIGUEL ALEM\xc1N         33           MERCADO PUBLICO
##    edificio_e numero_int letra_int tipo_asent                nomb_asent
## 1 PLANTA BAJA         NA              COLONIA             NUEVA VALLEJO
## 2 PLANTA BAJA         NA              COLONIA             NUEVA VALLEJO
## 3 PLANTA BAJA         NA              COLONIA             NUEVA VALLEJO
## 4 PLANTA BAJA         NA              COLONIA                 PRO HOGAR
## 5 PLANTA BAJA         10              COLONIA LINDAVISTA PATERA VALLEJO
## 6 PLANTA BAJA        101              COLONIA                  TACUBAYA
##        tipoCenCom                              nom_CenCom num_local cod_postal
## 1 MERCADO PUBLICO     MERCADO 93 MAGDALENA DE LAS SALINAS        02       7750
## 2 MERCADO PUBLICO     MERCADO 93 MAGDALENA DE LAS SALINAS         3       7750
## 3 MERCADO PUBLICO     MERCADO 93 MAGDALENA DE LAS SALINAS         7       7750
## 4 MERCADO PUBLICO        MERCADO PUBLICO SEDECO PRO HOGAR        10       2600
## 5 MERCADO PUBLICO MERCADO 366-1 LINDAVISTA-VALLEJO-PATERA        10       2300
## 6 MERCADO PUBLICO                     MERCADO DE TACUBAYA       101      11870
##   cve_ent             entidad cve_mun         municipio cve_loc
## 1       9 Ciudad de M\xe9xico       5 Gustavo A. Madero       1
## 2       9 Ciudad de M\xe9xico       5 Gustavo A. Madero       1
## 3       9 Ciudad de M\xe9xico       5 Gustavo A. Madero       1
## 4       9 Ciudad de M\xe9xico       2      Azcapotzalco       1
## 5       9 Ciudad de M\xe9xico       5 Gustavo A. Madero       1
## 6       9 Ciudad de M\xe9xico      16    Miguel Hidalgo       1
##                                                                                                        localidad
## 1 Gustavo A. Madero                                                                                             
## 2 Gustavo A. Madero                                                                                             
## 3 Gustavo A. Madero                                                                                             
## 4 Azcapotzalco                                                                                                  
## 5 Gustavo A. Madero                                                                                             
## 6 Miguel Hidalgo                                                                                                
##   ageb manzana telefono correoelec www tipoUniEco  latitud  longitud fecha_alta
## 1 1237      13                               Fijo 19.48495 -99.14869    2019-11
## 2 1237      13                               Fijo 19.48495 -99.14869    2010-07
## 3 1237      13                               Fijo 19.48495 -99.14869    2014-12
## 4 0400       5                               Fijo 19.47589 -99.15395    2010-07
## 5 0510       1                               Fijo 19.50113 -99.15310    2014-12
## 6 1194       9                               Fijo 19.39871 -99.18782    2010-07
##                     geometry
## 1 POINT (-99.14869 19.48495)
## 2 POINT (-99.14869 19.48495)
## 3 POINT (-99.14869 19.48495)
## 4 POINT (-99.15395 19.47589)
## 5  POINT (-99.1531 19.50113)
## 6 POINT (-99.18782 19.39871)

Para verificar que tanto puntos como polígonos están en la misma proyección, verificar sus SRC (Sistema de Referencia de Coordenadas) con st_crs. Si están en SRC distintas, usar st_transform.

Verificar SRC:

st_crs(muni)
## Coordinate Reference System:
##   No user input
##   wkt:
## PROJCS["Lambert_Conformal_Conic",
##     GEOGCS["GCS_GRS 1980(IUGG, 1980)",
##         DATUM["unknown",
##             SPHEROID["GRS80",6378137,298.257222101]],
##         PRIMEM["Greenwich",0],
##         UNIT["Degree",0.017453292519943295]],
##     PROJECTION["Lambert_Conformal_Conic_2SP"],
##     PARAMETER["standard_parallel_1",17.5],
##     PARAMETER["standard_parallel_2",29.5],
##     PARAMETER["latitude_of_origin",12],
##     PARAMETER["central_meridian",-102],
##     PARAMETER["false_easting",2500000],
##     PARAMETER["false_northing",0],
##     UNIT["Meter",1]]
st_crs(fv_sf)
## Coordinate Reference System:
##   User input: EPSG:4326 
##   wkt:
## GEOGCS["WGS 84",
##     DATUM["WGS_1984",
##         SPHEROID["WGS 84",6378137,298.257223563,
##             AUTHORITY["EPSG","7030"]],
##         AUTHORITY["EPSG","6326"]],
##     PRIMEM["Greenwich",0,
##         AUTHORITY["EPSG","8901"]],
##     UNIT["degree",0.0174532925199433,
##         AUTHORITY["EPSG","9122"]],
##     AUTHORITY["EPSG","4326"]]

Transformar SRC:

municipios_4326 = st_transform(muni, 4326)
st_crs(municipios_4326)
## Coordinate Reference System:
##   User input: EPSG:4326 
##   wkt:
## GEOGCS["WGS 84",
##     DATUM["WGS_1984",
##         SPHEROID["WGS 84",6378137,298.257223563,
##             AUTHORITY["EPSG","7030"]],
##         AUTHORITY["EPSG","6326"]],
##     PRIMEM["Greenwich",0,
##         AUTHORITY["EPSG","8901"]],
##     UNIT["degree",0.0174532925199433,
##         AUTHORITY["EPSG","9122"]],
##     AUTHORITY["EPSG","4326"]]

Para estar seguros de nuestros datos, mapeamos los municipios y las tiendas. Noten que muchas tiendas están fuera de nuestro polígono de interés porque incluímos municipios de los estados que no se encuentran dentro de la Zona Metropolitana del Valle de México.

Mapear las tiendas de frutas y verduras:

plot(municipios_4326$geometry)
plot(fv_sf$geometry, pch=20, col="red", size=.5, add=T)

Agregar puntos a polígonos:

#Numero de abarrotes por municipio
municipios_4326$sum_fv <- lengths(st_intersects(municipios_4326, fv_sf))

Mapear los datos agregados a nivel municipal:

tm_shape(municipios_4326) + 
  tm_polygons(col = 'sum_fv',
              border.col = 'darkgreen', 
              alpha = 0.5) 

ggplot(municipios_4326, aes(fill = sum_fv)) + 
  geom_sf() + 
  scale_fill_viridis_c() +
  theme_minimal() + 
  labs(title = "Concentración de frutas y verduras en la ZMVM")

Exportar los datos a un nuevo shapefile (distinta proyección y con el número de tiendas de frutas y verduras por municipio):

st_write(municipios_4326, "municipios_fv.shp")
## Writing layer `municipios_fv' to data source 
##   `municipios_fv.shp' using driver `ESRI Shapefile'
## Writing 76 features with 41 fields and geometry type Multi Polygon.