library(ggplot2)
## Warning: package 'ggplot2' was built under R version 3.2.4
library(dplyr)
## Warning: package 'dplyr' was built under R version 3.2.5
##
## 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(lubridate)
library(leaflet)
library(tm)
## Loading required package: NLP
##
## Attaching package: 'NLP'
## The following object is masked from 'package:ggplot2':
##
## annotate
library(SnowballC)
library(wordcloud)
## Loading required package: RColorBrewer
setwd("/Users/Arti/GitHub/starbucks-leaflet")
sbux <- read.csv("All_Starbucks_Locations_in_the_US.csv", stringsAsFactors = FALSE)
glimpse(sbux)
## Observations: 10,843
## Variables: 23
## $ Brand <chr> "Starbucks", "Starbucks", "Starbucks", "St...
## $ Store.Number <int> 11854, 79420, 3872, 13448, 10325, 7459, 11...
## $ Name <chr> "Epping Main St", "Stop & Shop-Exeter #204...
## $ Ownership.Type <chr> "Company Owned", "Licensed", "Licensed", "...
## $ Facility.ID <int> 18228, 9956, 10933, 16980, 17269, 18462, 1...
## $ Features...Products <chr> "Lunch, Oven-warmed Food, Reserve Amenity"...
## $ Features...Service <chr> "Starbucks Card Mobile, Wireless Hotspot",...
## $ Features...Stations <chr> "Drive-Through", "", "", "Drive-Through", ...
## $ Food.Region <int> 9999, 9999, 9999, 9999, 9999, 9999, 9999, ...
## $ Venue.Type <chr> "Unknown", "Unknown", "Unknown", "Unknown"...
## $ Phone.Number <chr> "603-679-8789", "603-772-1783", "603-501-1...
## $ Location <chr> "96 Calef Highway\nEpping, NH 03042-2224\n...
## $ Street.Address <chr> "96 Calef Highway", "139 Portsmouth Ave", ...
## $ Street.Line.1 <chr> "96 Calef Highway", "139 Portsmouth Ave", ...
## $ Street.Line.2 <chr> "", "", "", "", "", "Suite 17D", "", "", "...
## $ City <chr> "Epping", "Exeter", "Greenland", "Seabrook...
## $ State <chr> "NH", "NH", "NH", "NH", "NH", "NH", "MA", ...
## $ Zip <chr> "03042-2224", "03833-2105", "03840-2438", ...
## $ Country <chr> "US", "US", "US", "US", "US", "US", "US", ...
## $ Coordinates <chr> "(43.031873, -71.073203)", "(42.989763, -7...
## $ Latitude <dbl> 43.03187, 42.98976, 43.04871, 42.88213, 43...
## $ Longitude <dbl> -71.07320, -70.93204, -70.81634, -70.86808...
## $ Insert.Date <chr> "06/22/2012 06:17:10 PM", "06/22/2012 06:1...
# Rename fields
sbux <- sbux %>% rename(Features.Products = Features...Products) %>%
rename(Features.Service = Features...Service) %>%
rename(Features.Stations = Features...Stations)
# Create Station category and fill-in blanks
sbux$Features.Stations[sbux$Features.Stations == ""] <- "Not Drive-Through"
sbux$Features.Stations <- as.factor(sbux$Features.Stations)
table(sbux$Features.Stations)
##
## Drive-Through Not Drive-Through
## 2548 8295
# Create Ownership Type factor
table(sbux$Ownership.Type)
##
## Company Owned Licensed
## 6741 4102
sbux$Ownership.Type <- as.factor(sbux$Ownership.Type)
# Explore Licensed locations by franchise type
sbux$License.Franchise <- NA
# University
sbux$License.Franchise[grepl("college", tolower(sbux$Name)) | grepl("university", tolower(sbux$Name)) | grepl("campus", tolower(sbux$Name)) | grepl("student", tolower(sbux$Name)) | grepl("library", tolower(sbux$Name)) | grepl("univ", tolower(sbux$Name))] <- "Education"
# Travel Centers, Airports, Conventions
sbux$License.Franchise[grepl("airport", tolower(sbux$Name)) | grepl("concourse", tolower(sbux$Name)) | grepl("terminal", tolower(sbux$Name)) | grepl("ohare", tolower(sbux$Name)) | grepl("baggage", tolower(sbux$Name)) | grepl("term ", tolower(sbux$Name)) | grepl("security ", tolower(sbux$Name))] <- "Airport"
sbux$License.Franchise[grepl("travel plaza", tolower(sbux$Name)) | grepl("travel oasis", tolower(sbux$Name)) | grepl("travel center", tolower(sbux$Name))] <- "Travel Centers"
sbux$License.Franchise[grepl("convention", tolower(sbux$Name))] <- "Convention Center"
sbux$License.Franchise[grepl("food court", tolower(sbux$Name)) | grepl("food ct", tolower(sbux$Name))] <- "Food Court"
sbux$License.Franchise[grepl("food pyramid", tolower(sbux$Name)) | grepl("food pavilion", tolower(sbux$Name)) | grepl("food store", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
# Town Centers, Regional Centers
sbux$License.Franchise[grepl("town center", tolower(sbux$Name)) | grepl("towne center", tolower(sbux$Name)) | grepl("regional center", tolower(sbux$Name)) | grepl("trade center", tolower(sbux$Name)) | grepl("community center", tolower(sbux$Name)) | grepl("shopping center", tolower(sbux$Name)) | grepl(" center", tolower(sbux$Name)) | grepl(" ctr", tolower(sbux$Name))] <- "Shopping - Misc"
sbux$License.Franchise[grepl(" city", tolower(sbux$Name)) | grepl(" lobby", tolower(sbux$Name)) | grepl(" courtyard", tolower(sbux$Name)) | grepl(" mall", tolower(sbux$Name))] <- "Shopping - Misc"
# General categories
sbux$License.Franchise[grepl("hospital", tolower(sbux$Name)) | grepl("medical", tolower(sbux$Name))] <- "Hospital"
sbux$License.Franchise[grepl("beach", tolower(sbux$Name))] <- "Beach"
sbux$License.Franchise[grepl("casino", tolower(sbux$Name)) | grepl("harrah", tolower(sbux$Name))] <- "Hotel"
sbux$License.Franchise[grepl("fort ", tolower(sbux$Name)) | grepl("ft. ", tolower(sbux$Name))] <- "Army Bases"
# Specific Locations
sbux$License.Franchise[grepl("safeway", tolower(tolower(sbux$Name)))] <- "Supermarket/Grocery - Safeway"
sbux$License.Franchise[grepl("target", tolower(sbux$Name))] <- "Supermarket/Grocery - Target"
sbux$License.Franchise[grepl("albertson", tolower(sbux$Name))] <- "Supermarket/Grocery - Albertsons"
sbux$License.Franchise[grepl("vons", tolower(sbux$Name)) | grepl("von's", tolower(sbux$Name))] <- "Supermarket/Grocery - Vons"
sbux$License.Franchise[grepl("fred meyer", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("kroger", tolower(sbux$Name))] <- "Supermarket/Grocery - Kroger"
sbux$License.Franchise[grepl("harris teeter", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("king sooper", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("dominick", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("tom thumb", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("stop", tolower(sbux$Name)) & grepl("shop", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("hy", tolower(sbux$Name)) & grepl("vee", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("farm fresh", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("piggly wiggly", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("qfc", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("bashas", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("city market", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("dillon", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("genuardi", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("ingles", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("martin's", tolower(sbux$Name)) | grepl("martins", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("meijer", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("price cutter", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("randall", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("smith's", tolower(sbux$Name)) | grepl("smiths", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("spartan", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("a&p", tolower(sbux$Name)) | grepl("a & p", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
sbux$License.Franchise[grepl("giant ", tolower(sbux$Name)) | grepl("giant-", tolower(sbux$Name))] <- "Supermarket/Grocery - Misc"
# Shopping
sbux$License.Franchise[grepl("macy", tolower(sbux$Name))] <- "Shopping - Macy's"
sbux$License.Franchise[grepl("barnes", tolower(sbux$Name))] <- "Shopping - Barnes & Noble"
sbux$License.Franchise[grepl("fry", tolower(sbux$Name))] <- "Shopping - Fry's"
# Hotels
sbux$License.Franchise[grepl("marriott", tolower(sbux$Name)) | grepl("hilton", tolower(sbux$Name)) | grepl("hotel", tolower(sbux$Name)) | grepl("sheraton", tolower(sbux$Name)) | grepl("westin", tolower(sbux$Name)) | grepl("hyatt", tolower(sbux$Name))] <- "Hotel"
sbux$License.Franchise[sbux$Ownership.Type == "Company Owned"] <- "Starbucks-Owned"
sbux$License.Franchise[is.na(sbux$License.Franchise) == TRUE] <- "TBD"
# For quick checks
# sbux$Name[grepl("qfc", tolower(sbux$Name))]
# table(sbux$License.Franchise)
# Franchises table
franchises <- sbux %>%
group_by(License.Franchise) %>%
summarize(Count = n()) %>%
arrange(desc(Count))
# Create wordcloud of Starbucks Licensed Store names
sbuxCorpus <- Corpus(VectorSource(sbux$Name))
sbuxCorpus <- tm_map(sbuxCorpus, PlainTextDocument)
sbuxCorpus <- tm_map(sbuxCorpus, removePunctuation)
sbuxCorpus <- tm_map(sbuxCorpus, removeWords, stopwords('english'))
wordcloud(sbuxCorpus, max.words = 100, random.order = FALSE)
sbux_cluster <- leaflet() %>%
addTiles() %>%
setView(-101.140, 40.497, zoom = 5) %>%
addCircleMarkers(data = sbux, lng = ~ Longitude, lat = ~ Latitude,
radius = 7,
color = ~ ifelse(Features.Stations == 'Drive-Through',
'seagreen', 'purple'),
popup = ~ paste(Name, " - ", Ownership.Type, " (", Features.Stations, ")", sep = ""),
clusterOptions = markerClusterOptions())
sbux_cluster
pal_station <- colorFactor(c("seagreen", "goldenrod"), domain = c("Drive-Through", "Not Drive-Through"))
sbux_station <- leaflet() %>%
addTiles() %>%
setView(-101.140, 40.497, zoom = 5) %>%
addCircleMarkers(data = sbux, lng = ~ Longitude, lat = ~ Latitude,
radius = 5,
color = ~ ifelse(Features.Stations == 'Drive-Through',
'seagreen', 'goldenrod'), popup = ~ paste(Name, " - ", Ownership.Type, " (", Features.Stations, ")", sep = "")) %>% addLegend("bottomright", pal = pal_station, values = sbux$Features.Stations, title = "Starbucks Station Type", opacity = 1)
sbux_station
pal_ownership <- colorFactor(c("seagreen", "coral"), domain = c("Company Owned", "Licensed"))
sbux_ownership <- leaflet() %>%
addTiles() %>%
setView(-101.140, 40.497, zoom = 5) %>%
addCircleMarkers(data = sbux, lng = ~ Longitude, lat = ~ Latitude,
radius = 5,
color = ~ ifelse(Ownership.Type == 'Company Owned',
'seagreen', 'coral'), popup = ~ paste(Name, " (", Ownership.Type, ")", sep = "")) %>% addLegend("bottomright", pal = pal_ownership, values = sbux$Ownership.Type, title = "Starbucks Ownership Type", opacity = 1)
sbux_ownership
sbux_franchise <- leaflet() %>%
addTiles() %>%
setView(-101.140, 40.497, zoom = 5) %>%
addCircleMarkers(data = subset(sbux, sbux$License.Franchise == "Starbucks-Owned"), group = "Starbucks-Owned", lng = ~ Longitude, lat = ~ Latitude, radius = 7, fillOpacity = 0.5, color = "seagreen", popup = ~ paste(Name, " (", License.Franchise, ")", sep = "")) %>%
addCircleMarkers(data = subset(sbux, sbux$License.Franchise == "Supermarket/Grocery - Target"), group = "Supermarket/Grocery - Target", lng = ~ Longitude, lat = ~ Latitude, radius = 7, fillOpacity = 0.5, color = "red", popup = ~ paste(Name, " (", License.Franchise, ")", sep = "")) %>%
addCircleMarkers(data = subset(sbux, sbux$License.Franchise == "Supermarket/Grocery - Safeway"), group = "Supermarket/Grocery - Safeway", lng = ~ Longitude, lat = ~ Latitude, radius = 7, fillOpacity = 0.5, color = "blue", popup = ~ paste(Name, " (", License.Franchise, ")", sep = "")) %>%
addCircleMarkers(data = subset(sbux, sbux$License.Franchise == "Education"), group = "Education", lng = ~ Longitude, lat = ~ Latitude, radius = 7, fillOpacity = 0.5, color = "purple", popup = ~ paste(Name, " (", License.Franchise, ")", sep = "")) %>%
addCircleMarkers(data = subset(sbux, sbux$License.Franchise == "Supermarket/Grocery - Kroger"), group = "Supermarket/Grocery - Kroger", lng = ~ Longitude, lat = ~ Latitude, radius = 7, fillOpacity = 0.5, color = "deepskyblue", popup = ~ paste(Name, " (", License.Franchise, ")", sep = "")) %>%
addCircleMarkers(data = subset(sbux, sbux$License.Franchise == "Supermarket/Grocery - Albertsons"), group = "Supermarket/Grocery - Albertsons", lng = ~ Longitude, lat = ~ Latitude, radius = 7, fillOpacity = 0.5, color = "skyblue", popup = ~ paste(Name, " (", License.Franchise, ")", sep = "")) %>%
addCircleMarkers(data = subset(sbux, sbux$License.Franchise == "Supermarket/Grocery - Misc"), group = "Supermarket/Grocery - Misc", lng = ~ Longitude, lat = ~ Latitude, radius = 7, fillOpacity = 0.5, color = "slateblue", popup = ~ paste(Name, " (", License.Franchise, ")", sep = "")) %>%
addCircleMarkers(data = subset(sbux, sbux$License.Franchise == "Supermarket/Grocery - Vons"), group = "Supermarket/Grocery - Vons", lng = ~ Longitude, lat = ~ Latitude, radius = 7, fillOpacity = 0.5, color = "royalblue", popup = ~ paste(Name, " (", License.Franchise, ")", sep = "")) %>%
addCircleMarkers(data = subset(sbux, sbux$License.Franchise == "Airport"), group = "Airport", lng = ~ Longitude, lat = ~ Latitude, radius = 7, fillOpacity = 0.5, color = "chartreuse", popup = ~ paste(Name, " (", License.Franchise, ")", sep = "")) %>%
addCircleMarkers(data = subset(sbux, sbux$License.Franchise == "Hotel"), group = "Hotel", lng = ~ Longitude, lat = ~ Latitude, radius = 7, fillOpacity = 0.5, color = "salmon", popup = ~ paste(Name, " (", License.Franchise, ")", sep = "")) %>%
addCircleMarkers(data = subset(sbux, sbux$License.Franchise == "Shopping - Misc"), group = "Shopping - Misc", lng = ~ Longitude, lat = ~ Latitude, radius = 7, fillOpacity = 0.5, color = "orange", popup = ~ paste(Name, " (", License.Franchise, ")", sep = "")) %>%
addLayersControl(
overlayGroups = c("Starbucks-Owned", "Supermarket/Grocery - Target", "Supermarket/Grocery - Safeway", "Supermarket/Grocery - Misc", "Education", "Supermarket/Grocery - Kroger", "Supermarket/Grocery - Albertsons", "Supermarket/Grocery - Vons", "Airport", "Hotel", "Shopping - Misc"),
options = layersControlOptions(collapsed = FALSE)
)
sbux_franchise