Founded in Seattle, WA in 1971 by two teachers and a writer, Starbucks Corporation is the world’s largest coffeehouse chain with 23,768 locations worldwide, 13,107 of which located in the United States as of 2016 [1]. The company took a strategic turn in 1981, when Howard Schultz, the corporation’s current CEO, walked into Starbucks and envisioned the company modeling itself after the Italian coffee houses he had seen in Europe: a retail location that not only sells excellent coffee, but a company that sells an experience – a “home away from home” [2].
In 2011, the owner of Cafe on the Common, a small coffee shop on Main St. in Waltham, MA confided that he had attempted to recruit Starbucks to flip his store into a franchize. For reasons that weren’t fully clear, Starbucks turned down his offer saying Waltham was outside of their targeted market. Today, Waltham now has two Starbucks locations that didn’t exist in 2011: Brandeis University and 12 Market Place, both of which are accessible by higher-income individuals.
According to our research, 83% of Starbucks locations cater to white communities. Recently, the organization has attempted to bridge the gap with low-income and minority populations. In October, 2016, the company announced that it would be opening 15 stores in low-income communities of color [3]. Starbucks has also joined a coalition of businesses that have pledged to hire 100,000 at risk youth as a CSR campaign [4], and launched a racially-focused CSR marketing campaign called #RaceTogether, where the company encouraged dialogue about race relations [5]. The campaign didn’t fair well, with signs near cash-registers posing uncomfortable Madlib-esque conversations starters like, “In the past year, I have been to the home of someone of a different race ___ times” [6].
The guiding question for this project is, “How might customers’ average household-income inform Starbucks decisions to enter prospective markets?” We hypothesized that, yes, there would be a positive correlation between a community’s mean household income and the number of Starbucks locations, but that there might be an especially strong negative correlation with not low-income, but middle-income communities. We reasoned that middle-income, working-class populations would be more likely to exhibit financial discretion.
This R Markdown will first:
countries <- df %>% group_by(Country) %>% summarise(Total = round(n()))
names(countries) <- c("country.code", "total")
countries$iso3 <- countrycode_data[match(countries$country.code, countrycode_data$iso2c), "iso3c"]
data(worldgeojson, package = "highcharter")
dshmstops <- data.frame(q = c(0, exp(1:5)/exp(5)),
c = substring(viridis(5 + 1, option = "D"), 0, 7)) %>% list_parse2()
highchart() %>%
hc_add_series_map(worldgeojson, countries, value = "total", joinBy = "iso3") %>%
hc_colorAxis(stops = dshmstops) %>%
hc_legend(enabled = TRUE) %>%
hc_add_theme(hc_theme_google()) %>%
hc_mapNavigation(enabled = TRUE) %>%
hc_title(text = "") %>%
hc_credits(enabled = TRUE, text = "Sources: Starbucks Store Locator data by Github user chrismeller", style = list(fontSize = "10px"))
Notes:
countries <- df %>% group_by(Country) %>% summarise(Total = n(), Percentage = round(Total/dim(df)[1] * 100, 2)) %>% arrange(desc(Total)) %>% head(10)
hchart(countries, "bar", hcaes(Country, Total, color = Country)) %>%
hc_add_theme(hc_theme_google()) %>%
hc_title(text = "")
Notes:
stores_usa <- filter(df, Country == 'US')
States <- stores_usa %>% group_by(state) %>% summarise(Total = n(), Percentage = round(Total/dim(df)[1] * 100, 2)) %>% arrange(desc(Total)) %>% head(10)
hchart(States, "bar", hcaes(state, Total, color = `state`)) %>%
hc_add_theme(hc_theme_google()) %>%
hc_title(text = "")
Notes:
ownership <- df %>% group_by(`Ownership Type`) %>% summarise(Total = n(), Percentage = round(Total/dim(df)[1] * 100, 2)) %>% arrange(desc(Total)) %>% head(10)
hchart(ownership, "bar", hcaes(`Ownership Type`, Total, color = `Ownership Type`)) %>%
hc_add_theme(hc_theme_google()) %>%
hc_title(text = "")
Notes:
Unlike Mcdonalds that uses a franchising model, Starbucks uses licensing model to expand.
world <- map_data("world") #Generates a world data by longitude and latitude
#plot All states with ggplot
world_map <- ggplot()
world_map <- world_map + geom_polygon( data=world, aes(x=long, y=lat, group = group),colour="white", fill="grey10")
world_map <- world_map + geom_point(data=df,
aes(x=Longitude, y=Latitude), colour="yellow",
fill="red",pch=21, size=.5, alpha=I(0.7))
world_map
Notes:
all_states <- map_data("state")
#plot All states with ggplot
US <- US[US$state!="AK" & US$state!="HI" & US$state!="PI" & US$state!="VI"
& US$state!="PW" & US$state!="MP", ] # Removing the non-continental states
US_map <- ggplot()
US_map <- US_map + geom_polygon(data=all_states, aes(x=long, y=lat, group = group),colour="white", fill="grey10")
US_map <- US_map + geom_point(data=US,
aes(x=Longitude, y=Latitude), colour="yellow",
fill="red",pch=21, size=.5, alpha=I(0.7))
US_map
Notes:
MA_state <- map_data("county")
states <- subset(MA_state, region %in% "massachusetts")
MA_map <- ggplot()
MA_map <- MA_map + geom_polygon( data=states, aes(x=long, y=lat, group = group),colour="white", fill="grey10" )
MA_map <- MA_map + geom_point(data=MA,
aes(x=Longitude, y=Latitude), colour="yellow",
fill="red",pch=21, size=1, alpha=I(0.7))
MA_map
Notes:
x<- df %>% select(Country, `Ownership Type` ) %>% group_by(Country,`Ownership Type`) %>%
summarise(sum_Country=n()) %>% arrange(desc(sum_Country),desc(`Ownership Type`))
Country_own <- filter(x,Country=="CN"|Country=="US"|Country=="CA"|Country=="JP"|
Country=="KR"|Country=="GB"|Country=="MX"
|Country=="TW"|Country=="TR"|Country=="PH")
#Graph showing Starbucks Stores By country and ownership Type
ggplot(data=Country_own, aes(x=Country, y=sum_Country, fill=`Ownership Type`))+
ylab("Number of Starbucks per OwnershipType")+
geom_bar(stat = "identity")
Notes:
by_city <- df %>% group_by(City) %>% summarise(Total = n(), Percentage = round(Total/dim(df)[1] * 100, 2)) %>% arrange(desc(Total)) %>% head(10)
hchart(by_city, "bar", hcaes(City, Total, color = City)) %>%
hc_add_theme(hc_theme_google()) %>%
hc_title(text = "")
Notes:
## Parsed with column specification:
## cols(
## fipscode = col_character(),
## postalcode = col_character(),
## Name = col_character(),
## poverty_est = col_character(),
## percent_poverty = col_character(),
## household_income = col_character()
## )
heatmap <- ggplot(heat, aes(long, lat))
heatmap <- heatmap + geom_polygon(aes(group = group, fill = income),colour="white") + scale_fill_continuous(low="white", high="#006600", limits=c(30000,76100))
heatmap <- heatmap + geom_point(data=US,
aes(x=Longitude, y=Latitude), colour="yellow",
fill="red",pch=21, size=1, alpha=I(0.4))
heatmap
Notes:
heat_map_MA <- ggplot()
heat_map_MA <- heat_map_MA + geom_polygon(data=heat_ma, aes(x=long, y=lat, group = subregion, fill = income),colour="white") + scale_fill_continuous(low="white", high="#006600", limits=c(30000,95000))
heat_map_MA <- heat_map_MA + geom_point(data=MA,
aes(x=Longitude, y=Latitude), colour="yellow",
fill="red",pch=21, size=1, alpha=I(0.7))
heat_map_MA
Notes:
In our analysis, we observed that there does appear to be a strong correlation between communities with high average household incomes and Starbucks locations. In addition, starbucks locations tend to be in highly populated cities and states. This makes a lot of sense as there is a large customer base.
Questions remaining to be answered: