library(leaflet)

leaflet() %>% addTiles() %>% addMarkers(lng = -74.0445, lat = 40.6892, popup = 'Statue of Liberty!')
library(dplyr)
## Warning: package 'dplyr' was built under R version 3.6.3
## 
## 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
data <- read.csv('2019-12-city-of-london-street.csv')
leaflet() %>% addTiles() %>% addMarkers(lng = data$Longitude, lat = data$Latitude, popup = data$Crime.type)
## Warning in validateCoords(lng, lat, funcName): Data contains 79 rows with either
## missing or invalid lat/lon values and will be ignored
icons <- makeIcon(iconUrl = 'https://cdn0.iconfinder.com/data/icons/topics/256/icon_crime-512.png',
                  iconWidth = 40, iconHeight = 40,
                  iconAnchorX = 20, iconAnchorY = 40)

leaflet() %>% addTiles() %>% addMarkers(lng = data$Longitude, lat = data$Latitude, icon = icons, popup = data$Crime.type)
## Warning in validateCoords(lng, lat, funcName): Data contains 79 rows with either
## missing or invalid lat/lon values and will be ignored
leaflet() %>% addProviderTiles('Stamen.Toner') %>% addMarkers(lng = data$Longitude, lat = data$Latitude, icon = icons, popup = data$Crime.type)
## Warning in validateCoords(lng, lat, funcName): Data contains 79 rows with either
## missing or invalid lat/lon values and will be ignored

A list of third part maps available can be found here http://leaflet-extras.github.io/leaflet-providers/preview/index.html

knife <- makeIcon(iconUrl = 'http://media.cardplayer.com/assets/000/012/224/knife-255x219.jpg',
                     iconWidth = 40, iconHeight = 40)
money <- makeIcon(iconUrl = 'https://steemitimages.com/DQmaEKxdLAtp5ZGJQ4SrT43nYBjAtq8eyPuuHuorLHMvhFN/image.png',
                     iconWidth = 40, iconHeight = 40)

murder <- data %>% filter(Crime.type == 'Violence and sexual offences')
robbery <- data %>% filter(Crime.type == 'Theft from the person' | Crime.type == 'Burglary')
other_crimes <- data %>% filter(Crime.type != 'Violence and sexual offences' & Crime.type != 'Theft from the person' & Crime.type != 'Burglary')

leaflet() %>% addTiles() %>% addMarkers(lng = murder$Longitude, lat = murder$Latitude, icon = knife, popup = 'Murder!!') %>% addMarkers(lng = robbery$Longitude, lat = robbery$Latitude, icon = money, popup = 'Stealing!') %>% addMarkers(lng = other_crimes$Longitude, lat = other_crimes$Latitude, icon = icons, popup = 'Some crime')
## Warning in validateCoords(lng, lat, funcName): Data contains 11 rows with either
## missing or invalid lat/lon values and will be ignored

## Warning in validateCoords(lng, lat, funcName): Data contains 11 rows with either
## missing or invalid lat/lon values and will be ignored
## Warning in validateCoords(lng, lat, funcName): Data contains 57 rows with either
## missing or invalid lat/lon values and will be ignored

A list of third part maps available can be found here http://leaflet-extras.github.io/leaflet-providers/preview/index.html