Cargar paquetes y base de datos
rm(list=ls())
library(data.table)
library(ggplot2)
library(usmap)
library(leaflet)
library(maps)
library(sf)
library(scales)
library(USAboundaries)
crimen_EEUU <- fread('crime.csv')
states <- c('New Hampshire', 'District of Columbia', 'New York', 'Alabama','Ohio')
ggplot(crimen_EEUU[jurisdiction %in% states & year==2017], aes(x=crime,y=n_crimes, fill=jurisdiction)) + geom_col() + facet_wrap(facets = 'jurisdiction') +
theme(axis.text.x = element_text(angle=90, vjust=0.5)) + scale_y_continuous(labels = number_format(scale = 0.001, suffix = " Mil")) # arreglar el eje y, para que no tenga notación cientifica
library(scales)
crimen_EEUU[,year:=as.character(year)]
ggplot(crimen_EEUU[jurisdiction=='New York' ], aes(x=year,y= n_crimes, group = crime, color=crime)) +
geom_line() + facet_wrap(facets = 'crime', nrow = 3)+
theme(axis.text.x = element_text(angle=90, vjust=0.5)) + scale_y_continuous(labels = number_format(scale = 0.00001, suffix = " Mil")) # arreglar el eje y, para que no tenga notación cientifica
crimen_EEUU[,sum_crimes_per_year_state:=sum(n_crimes,na.rm = T), by=c('year','jurisdiction')]
crimen_EEUU[,sum_crimes_per_year:=sum(n_crimes,na.rm = T), by=c('year')]
crimen_EEUU[,rate_crime:=sum_crimes_per_year_state/sum_crimes_per_year, by=c('year')]
crimen2017 <- crimen_EEUU[year=='2017',.(jurisdiction,rate_crime)]
crimen2017 <- crimen2017[!duplicated(jurisdiction)] # borramos los duplicados
# Cargamos la geografía de los Estados de EEUU, con el paquete cargado previamente USAboundaries
states <- us_states(map_date = NULL, resolution = c("low", "high"), states = NULL)
# juntamos la geografía con la información de los crímenes.
mapa <- merge(states,crimen2017,by.x='name', by.y = 'jurisdiction')
mapa <- st_as_sf(mapa)
bins<-seq(0,0.2,0.02)
paleta<-colorBin(palette = 'BuPu',domain = crimen2017$rate_crime,bins = bins) # Paleta de colores para el mapa
labels <- sprintf(
"<strong>Estado: %s</strong><br/>Tasa de crimen: %g",
mapa$name, mapa$rate_crime
) %>% lapply(htmltools::HTML) # Labels al pasar el mouse arriba del mapa
leaflet(mapa) %>%
addProviderTiles(provider = providers$OpenStreetMap.Mapnik)%>%
addPolygons(fillColor = ~paleta(mapa$rate_crime),
weight = 2,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = labels,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto")) %>%
addLegend(pal = paleta, values = ~bins, opacity = 1,position = "bottomright",title ="Tasa de crimen")
dcast para cambiar el formato de long a widecrimen_EEUU1 <- dcast(crimen_EEUU, jurisdiction+year+rate_crime+state_population~crime,value.var = "n_crimes")
crimen_EEUU1 <- crimen_EEUU1[year=='2017']
mapa1 <- merge(states,crimen_EEUU1,by.x='name', by.y = 'jurisdiction')
mapa1 <- st_as_sf(mapa1)
labels1 <- sprintf(
"<strong>Estado: %s</strong><br/>Tasa de crimen: %g<br>Robos: %s<br>Hurto: %s<br>Homicidio sin premeditación: %s<br>Violación: %s<br>Robo vehículo: %s",
mapa1$name, mapa1$rate_crime, mapa1$robbery,mapa1$larceny, mapa1$murder_manslaughter, mapa1$rape_revised, mapa1$vehicle_theft
) %>% lapply(htmltools::HTML)
leaflet(mapa1) %>%
addProviderTiles(provider = providers$OpenStreetMap.Mapnik)%>%
addPolygons(fillColor = ~paleta(mapa1$rate_crime),
weight = 2,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = labels1,
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto")) %>%
addLegend(pal = paleta, values = ~bins, opacity = 1,position = "bottomright",title ="Tasa de crimen")