Libraries

library(mapview, quietly = T)
library(sf, quietly = T)
## Linking to GEOS 3.9.1, GDAL 3.2.1, PROJ 7.2.1; sf_use_s2() is TRUE
library(tidycensus, quietly = T)
library(tidyverse, quietly = T)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.6     v dplyr   1.0.7
## v tidyr   1.2.0     v stringr 1.4.0
## v readr   2.1.2     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(sf, quietly = T)
library(tmap, quietly = T)
library(dplyr, quietly = T)
library(tmap, quietly = T)
library(ggplot2, quietly = T)
library(classInt, quietly = T)
library(patchwork, quietly = T)
library(tmaptools, quietly = T)
library(ggsn, quietly = T)
library(censusxy, quietly = T)
library(sysfonts, quietly = T)

Read Data

library(readr)
addr <- read_csv("C:/Users/spara/OneDrive/Desktop/wic&gstore.csv")
## New names:
## * Source -> Source...1
## * Source -> Source...227
## * `` -> ...228
## Rows: 58 Columns: 228
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (170): Source...1, Date, Obsolescence Date, Business Name, Legal Name, P...
## dbl  (45): Physical Address Number, Physical ZIP, Physical ZIP 4, Location E...
## lgl  (12): Physical Post Direction, Mailing Post Direction, EIN, Importer or...
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
addr <- addr[c(6, 12:14)]
names(addr) <- c("street", "city", "st", "zip")
head(addr)

Geocoding

Creating map by censusxy

library(censusxy)

results<-cxy_geocode(addr,
                     street = "street",
                     city = "city",
                     state ="st",
                     zip = "zip",
                     class="sf",
                     output = "simple")
## 25 rows removed to create an sf object. These were addresses that the geocoder could not match.
mapview::mapview(results, layer="WIC Services & Grocery Stores")
library(sf)
st_write(results, dsn="`/.", layer="WIC Services & Grocery Stores", driver="ESRI Shapefile", delete_layer = T, update = T)
## Warning: 'update' is deprecated.
## Use 'append' instead.
## See help("Deprecated")
## Deleting layer `WIC Services & Grocery Stores' using driver `ESRI Shapefile'
## Updating layer `WIC Services & Grocery Stores' to data source ``/.' using driver `ESRI Shapefile'
## Writing 33 features with 4 fields and geometry type Point.

Results:

57% of the locations are geocoded.

Data creation for grocery stores

add <- read.csv("C:/Users/spara/OneDrive/Desktop/wic&gstore.csv")

add <- add[c(6, 12:14)]
names(add) <- c("street", "city", "st", "zip")
head(add)

Geocoding for grocery stores

Creating map by censusxy

library(censusxy)
results<-cxy_geocode(addr,
                     street = "street",
                     city = "city",
                     state ="st",
                     zip = "zip",
                     class="sf",
                     output = "simple")
## 25 rows removed to create an sf object. These were addresses that the geocoder could not match.
mapview::mapview(results, layer="Grocery Stores")
library(sf)
st_write(results, dsn="`/.", layer="Grocery Stores", driver="ESRI Shapefile", delete_layer = T, update = T)
## Warning: 'update' is deprecated.
## Use 'append' instead.
## See help("Deprecated")
## Deleting layer `Grocery Stores' using driver `ESRI Shapefile'
## Updating layer `Grocery Stores' to data source ``/.' using driver `ESRI Shapefile'
## Writing 33 features with 4 fields and geometry type Point.

Results:

53% of the locations are geocoded.

Data creation for WIC services

add <- read.csv("C:/Users/spara/OneDrive/Desktop/wic&gstore.csv")

add <- add[c(6, 12:14)]
names(add) <- c("street", "city", "st", "zip")
head(add)

Geocoding for WIC services

library(censusxy)
results<-cxy_geocode(addr,
                     street = "street",
                     city = "city",
                     state ="st",
                     zip = "zip",
                     class="sf",
                     output = "simple")
## 24 rows removed to create an sf object. These were addresses that the geocoder could not match.
mapview::mapview(results, layer="WIC Services")
library(sf)
st_write(results, dsn="`/.", layer="WIC Services", driver="ESRI Shapefile", delete_layer = T, update = T)
## Warning: 'update' is deprecated.
## Use 'append' instead.
## See help("Deprecated")
## Deleting layer `WIC Services' using driver `ESRI Shapefile'
## Updating layer `WIC Services' to data source ``/.' using driver `ESRI Shapefile'
## Writing 34 features with 4 fields and geometry type Point.

Results:

52% of the locations are geocoded.

LS0tDQp0aXRsZTogIkdJUyBIVyA1Ig0KYXV0aG9yOiAiSnlvdGkgTmVwYWwsIE1TVyINCmRhdGU6ICAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlQiwgJVknKWAiDQpvdXRwdXQ6DQogICBodG1sX2RvY3VtZW50Og0KICAgIGRmX3ByaW50OiBwYWdlZA0KICAgIGZpZ19oZWlnaHQ6IDcNCiAgICBmaWdfd2lkdGg6IDcNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDogeWVzDQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KLS0tDQoNCg0KIyMgTGlicmFyaWVzDQpgYGB7cn0NCmxpYnJhcnkobWFwdmlldywgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KHNmLCBxdWlldGx5ID0gVCkNCmxpYnJhcnkodGlkeWNlbnN1cywgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KHRpZHl2ZXJzZSwgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KHNmLCBxdWlldGx5ID0gVCkNCmxpYnJhcnkodG1hcCwgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KGRwbHlyLCBxdWlldGx5ID0gVCkNCmxpYnJhcnkodG1hcCwgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KGdncGxvdDIsIHF1aWV0bHkgPSBUKQ0KbGlicmFyeShjbGFzc0ludCwgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KHBhdGNod29yaywgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KHRtYXB0b29scywgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KGdnc24sIHF1aWV0bHkgPSBUKQ0KbGlicmFyeShjZW5zdXN4eSwgcXVpZXRseSA9IFQpDQpsaWJyYXJ5KHN5c2ZvbnRzLCBxdWlldGx5ID0gVCkNCmBgYA0KDQojIyBSZWFkIERhdGENCmBgYHtyfQ0KbGlicmFyeShyZWFkcikNCmFkZHIgPC0gcmVhZF9jc3YoIkM6L1VzZXJzL3NwYXJhL09uZURyaXZlL0Rlc2t0b3Avd2ljJmdzdG9yZS5jc3YiKQ0KDQphZGRyIDwtIGFkZHJbYyg2LCAxMjoxNCldDQpuYW1lcyhhZGRyKSA8LSBjKCJzdHJlZXQiLCAiY2l0eSIsICJzdCIsICJ6aXAiKQ0KaGVhZChhZGRyKQ0KYGBgDQoNCg0KIyMgR2VvY29kaW5nDQoNCiMjIyBDcmVhdGluZyBtYXAgYnkgY2Vuc3VzeHkNCmBgYHtyfQ0KbGlicmFyeShjZW5zdXN4eSkNCg0KcmVzdWx0czwtY3h5X2dlb2NvZGUoYWRkciwNCiAgICAgICAgICAgICAgICAgICAgIHN0cmVldCA9ICJzdHJlZXQiLA0KICAgICAgICAgICAgICAgICAgICAgY2l0eSA9ICJjaXR5IiwNCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0ic3QiLA0KICAgICAgICAgICAgICAgICAgICAgemlwID0gInppcCIsDQogICAgICAgICAgICAgICAgICAgICBjbGFzcz0ic2YiLA0KICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gInNpbXBsZSIpDQpgYGANCg0KYGBge3J9DQptYXB2aWV3OjptYXB2aWV3KHJlc3VsdHMsIGxheWVyPSJXSUMgU2VydmljZXMgJiBHcm9jZXJ5IFN0b3JlcyIpDQpgYGANCg0KDQpgYGB7cn0NCmxpYnJhcnkoc2YpDQpzdF93cml0ZShyZXN1bHRzLCBkc249ImAvLiIsIGxheWVyPSJXSUMgU2VydmljZXMgJiBHcm9jZXJ5IFN0b3JlcyIsIGRyaXZlcj0iRVNSSSBTaGFwZWZpbGUiLCBkZWxldGVfbGF5ZXIgPSBULCB1cGRhdGUgPSBUKQ0KYGBgDQoNCiMgUmVzdWx0czogDQo1NyUgb2YgdGhlIGxvY2F0aW9ucyBhcmUgZ2VvY29kZWQuIA0KDQoNCiMgRGF0YSBjcmVhdGlvbiBmb3IgZ3JvY2VyeSBzdG9yZXMgDQpgYGB7cn0NCmFkZCA8LSByZWFkLmNzdigiQzovVXNlcnMvc3BhcmEvT25lRHJpdmUvRGVza3RvcC93aWMmZ3N0b3JlLmNzdiIpDQoNCmFkZCA8LSBhZGRbYyg2LCAxMjoxNCldDQpuYW1lcyhhZGQpIDwtIGMoInN0cmVldCIsICJjaXR5IiwgInN0IiwgInppcCIpDQpoZWFkKGFkZCkNCmBgYA0KIyMgR2VvY29kaW5nIGZvciBncm9jZXJ5IHN0b3JlcyANCg0KIyMjIENyZWF0aW5nIG1hcCBieSBjZW5zdXN4eQ0KDQpgYGB7cn0NCmxpYnJhcnkoY2Vuc3VzeHkpDQpyZXN1bHRzPC1jeHlfZ2VvY29kZShhZGRyLA0KICAgICAgICAgICAgICAgICAgICAgc3RyZWV0ID0gInN0cmVldCIsDQogICAgICAgICAgICAgICAgICAgICBjaXR5ID0gImNpdHkiLA0KICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSJzdCIsDQogICAgICAgICAgICAgICAgICAgICB6aXAgPSAiemlwIiwNCiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJzZiIsDQogICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSAic2ltcGxlIikNCg0KYGBgDQoNCmBgYHtyfQ0KbWFwdmlldzo6bWFwdmlldyhyZXN1bHRzLCBsYXllcj0iR3JvY2VyeSBTdG9yZXMiKQ0KYGBgDQoNCg0KYGBge3J9DQpsaWJyYXJ5KHNmKQ0Kc3Rfd3JpdGUocmVzdWx0cywgZHNuPSJgLy4iLCBsYXllcj0iR3JvY2VyeSBTdG9yZXMiLCBkcml2ZXI9IkVTUkkgU2hhcGVmaWxlIiwgZGVsZXRlX2xheWVyID0gVCwgdXBkYXRlID0gVCkNCmBgYA0KDQojIFJlc3VsdHM6DQo1MyUgb2YgdGhlIGxvY2F0aW9ucyBhcmUgZ2VvY29kZWQuICANCg0KDQojIERhdGEgY3JlYXRpb24gZm9yIFdJQyBzZXJ2aWNlcyANCg0KYGBge3J9DQphZGQgPC0gcmVhZC5jc3YoIkM6L1VzZXJzL3NwYXJhL09uZURyaXZlL0Rlc2t0b3Avd2ljJmdzdG9yZS5jc3YiKQ0KDQphZGQgPC0gYWRkW2MoNiwgMTI6MTQpXQ0KbmFtZXMoYWRkKSA8LSBjKCJzdHJlZXQiLCAiY2l0eSIsICJzdCIsICJ6aXAiKQ0KaGVhZChhZGQpDQpgYGANCiMjIEdlb2NvZGluZyBmb3IgV0lDIHNlcnZpY2VzDQoNCmBgYHtyfQ0KbGlicmFyeShjZW5zdXN4eSkNCnJlc3VsdHM8LWN4eV9nZW9jb2RlKGFkZHIsDQogICAgICAgICAgICAgICAgICAgICBzdHJlZXQgPSAic3RyZWV0IiwNCiAgICAgICAgICAgICAgICAgICAgIGNpdHkgPSAiY2l0eSIsDQogICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9InN0IiwNCiAgICAgICAgICAgICAgICAgICAgIHppcCA9ICJ6aXAiLA0KICAgICAgICAgICAgICAgICAgICAgY2xhc3M9InNmIiwNCiAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9ICJzaW1wbGUiKQ0KDQpgYGANCg0KYGBge3J9DQptYXB2aWV3OjptYXB2aWV3KHJlc3VsdHMsIGxheWVyPSJXSUMgU2VydmljZXMiKQ0KYGBgDQoNCg0KYGBge3J9DQpsaWJyYXJ5KHNmKQ0Kc3Rfd3JpdGUocmVzdWx0cywgZHNuPSJgLy4iLCBsYXllcj0iV0lDIFNlcnZpY2VzIiwgZHJpdmVyPSJFU1JJIFNoYXBlZmlsZSIsIGRlbGV0ZV9sYXllciA9IFQsIHVwZGF0ZSA9IFQpDQpgYGANCiMgUmVzdWx0czoNCjUyJSBvZiB0aGUgbG9jYXRpb25zIGFyZSBnZW9jb2RlZC4gDQo=