Loading datasets

library(htmlwidgets)
library(htmltools)

library(leaflet)
data1 <- read.csv("college.csv")
data2 <- read.csv("uscities.csv")

Filtering data for only Michigan colleges

library(dplyr)
MichiganCollege <- data1 %>% filter(state =="MI") %>% 
  arrange(desc(tuition))
## filter city data with Michigan cities 
MichiganCity <- data2 %>% filter(state_id=="MI") %>% 
  select(city,state_id,population)


## join Michigan college data with city population
newMIData <- left_join(MichiganCollege,MichiganCity,by="city")

newMIData %>% arrange(desc(tuition)) %>% select(name, city,population,tuition,) %>% head(5)
##                           name      city population tuition
## 1            Kalamazoo College Kalamazoo     215193   41161
## 2               Albion College    Albion       8990   37485
## 3  University of Detroit Mercy   Detroit    3506126   37320
## 4 College for Creative Studies   Detroit    3506126   37092
## 5         Kettering University     Flint     332190   36980
## create dataframe for map
michigan_data_points<-data.frame(
  lat=newMIData$lat,
  lng=newMIData$lng,
  size=newMIData$tuition/2500,
  label=newMIData$name,
  city=newMIData$city,
  control=newMIData$control,
  tuition=newMIData$tuition
)

## create color palette for map
pal <- colorFactor(palette = c("blue", "red"), 
                   levels = unique(michigan_data_points$control))
tuition.pal <- colorBin("RdYlBu",unique(michigan_data_points$tuition))

Plotting the map

# plot on map and add size and label
leaflet()%>%addProviderTiles(providers$CartoDB.Voyager)%>%
addCircleMarkers(data=michigan_data_points,
                 radius = ~size, 
                 color = ~pal(control),
                 fillOpacity = 0.4,
                 popup = ~paste("City:",city,"<br/>","Tuition:",
                                "$",size*2500,"<br/>","School:",label)) %>%
                 setView(-84.5068, 44.1822, zoom = 6) %>% 
                 addLegend(pal = tuition.pal,value=NULL, position = "topright",
                           title = "Tuition")%>%
                 addLegend(title = "Institution Control",
                           position = "topright", pal = pal,
                           values = michigan_data_points$control) %>% 
                 addControl("Michigan Colleges and Their Yearly Cost", 
                            position="topleft")