library(sf)
## Warning: package 'sf' was built under R version 4.5.3
## Linking to GEOS 3.14.1, GDAL 3.12.1, PROJ 9.7.1; sf_use_s2() is TRUE
library(leaflet)
## Warning: package 'leaflet' was built under R version 4.5.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.5.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
library(tigris)
## Warning: package 'tigris' was built under R version 4.5.3
## To enable caching of data, set `options(tigris_use_cache = TRUE)`
## in your R script or .Rprofile.
options(tigris_use_cache = TRUE)

states <- states(cb = TRUE, year = 2023)

set.seed(123)

crime_data <- data.frame(
  NAME = states$NAME,
  crime_rate = runif(nrow(states), min = 100, max = 800)
)

merged_data <- states %>%
  left_join(crime_data, by = "NAME")

pal <- colorNumeric(
  palette = "YlOrRd",
  domain = merged_data$crime_rate
)

leaflet(data = merged_data) %>%
  addTiles() %>%
  addPolygons(
    fillColor = ~pal(crime_rate),
    weight = 1,
    color = "white",
    fillOpacity = 0.7,
    highlightOptions = highlightOptions(
      weight = 2,
      color = "black",
      bringToFront = TRUE
    ),
    label = ~paste(NAME, "<br>Crime Rate:", round(crime_rate, 1))
  ) %>%
  addLegend(
    pal = pal,
    values = ~crime_rate,
    title = "Crime Rate",
    position = "bottomright"
  )
## Warning: sf layer has inconsistent datum (+proj=longlat +datum=NAD83 +no_defs).
## Need '+proj=longlat +datum=WGS84'