library(leaflet)
library(tidyverse)
library(lubridate)
library(htmltools)
library(rtweet)
library(readxl)
library(broom)
library(plotly)
library(DT)
library(dplyr)
shootings %>%
leaflet() %>%
addTiles() %>%
setView(lng = -98.5795, lat = 39.8283, zoom = 4) %>%
addCircleMarkers(radius = ~log(total_victims))
Assuming "longitude" and "latitude" are longitude and latitude, respectively
This is a general overview map of shootings in the U.S.
shootings %>%
summarize(median_total_victims = median(total_victims))
This is the mean of total victims.
shootings %>%
summarize(median_fatalities = median(fatalities))
This is the mean of fatalaties.
shootings %>%
mutate(case = as_factor(case)) %>%
mutate(case = fct_collapse(case)) %>%
count(case)
This collapses variables and shows a table of how many shootings each place had.
shootings %>%
plot_ly(x = ~year) %>%
add_histogram(nbinsx = 40)
This histogram shows the number of shootings over the years.
shootings %>%
mutate(race = as_factor(race)) %>%
mutate(race = fct_collapse(race,
Unknown = c("-", "Other", "unclear"))) %>%
count(race)
Another collapse of variables and table showing shootings per race.
shootings %>%
mutate(gender = as_factor(gender)) %>%
mutate(gender = fct_collapse(gender,
Unknown = c("-", "Male & Female"))) %>%
count(gender)
Another collapse of variables and table showing shooters as per thier gender.
shootings %>%
plot_ly(x = ~gender, y = ~race) %>%
add_histogram2dcontour()
This is a heat map showing the race and gender of the shooters.
shootings %>%
mutate(gender = as_factor(gender)) %>%
mutate(gender = fct_collapse(gender)) %>%
count(gender)
shootings %>%
mutate(age_of_shooter = as_factor(age_of_shooter)) %>%
mutate(age_of_shooter = fct_collapse(age_of_shooter)) %>%
count(age_of_shooter)
shootings %>%
plot_ly(x = ~gender, y = ~age_of_shooter) %>%
add_histogram2dcontour()
This is a heat map that shows the gender and age.
shootings %>%
plot_ly(x = ~injured,
y = ~fatalities,
hoverinfo = "text",
text = ~paste("Fatalities per shooting:")) %>%
add_markers(showlegend = F) %>%
layout(title = "Number of fatalities per shooting by year",
xaxis = list(title = "Number injured"),
yaxis = list(title = "Number of fatalities per shooting"))
This scatterplot shows the number of fatalities by number injured.
num_per_year <- shootings %>%
filter(fatalities > 3) %>%
count(year) %>%
filter(year < 2019)
num_per_year
This is setting up a regression.
fatalities_per_incident_model2 <- lm(fatalities ~ year, data = shootings)
fatalities_per_incident_model2
Call:
lm(formula = fatalities ~ year, data = shootings)
Coefficients:
(Intercept) year
10.0315821 -0.0009737
This is a print out of the model.
tidy(fatalities_per_incident_model2)
glance(fatalities_per_incident_model2)
These are the stats for the regression.
shootings %>%
plot_ly(x = ~year,
y = ~fatalities) %>%
add_markers() %>%
add_lines(y = ~fitted(fatalities_per_incident_model2))
This scatterplot shows the fatalities over the years due to the shootings.
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3J9CmxpYnJhcnkobGVhZmxldCkKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkobHVicmlkYXRlKQpsaWJyYXJ5KGh0bWx0b29scykKbGlicmFyeShydHdlZXQpCmxpYnJhcnkocmVhZHhsKQpsaWJyYXJ5KGJyb29tKQpsaWJyYXJ5KHBsb3RseSkKbGlicmFyeShEVCkKbGlicmFyeShkcGx5cikKCmBgYAoKCgpgYGB7cn0Kc2hvb3RpbmdzICU+JQogIGxlYWZsZXQoKSAlPiUKICBhZGRUaWxlcygpICU+JQogIHNldFZpZXcobG5nID0gLTk4LjU3OTUsIGxhdCA9IDM5LjgyODMsIHpvb20gPSA0KSAlPiUKICBhZGRDaXJjbGVNYXJrZXJzKHJhZGl1cyA9IH5sb2codG90YWxfdmljdGltcykpCmBgYApUaGlzIGlzIGEgZ2VuZXJhbCBvdmVydmlldyBtYXAgb2Ygc2hvb3RpbmdzIGluIHRoZSBVLlMuCgpgYGB7cn0Kc2hvb3RpbmdzICU+JSAKICBzdW1tYXJpemUobWVkaWFuX3RvdGFsX3ZpY3RpbXMgPSBtZWRpYW4odG90YWxfdmljdGltcykpCmBgYApUaGlzIGlzIHRoZSBtZWFuIG9mIHRvdGFsIHZpY3RpbXMuCgpgYGB7cn0Kc2hvb3RpbmdzICU+JSAKICBzdW1tYXJpemUobWVkaWFuX2ZhdGFsaXRpZXMgPSBtZWRpYW4oZmF0YWxpdGllcykpCmBgYApUaGlzIGlzIHRoZSBtZWFuIG9mIGZhdGFsYXRpZXMuCgpgYGB7cn0Kc2hvb3RpbmdzICU+JSAKICBtdXRhdGUoY2FzZSA9IGFzX2ZhY3RvcihjYXNlKSkgJT4lIAogIG11dGF0ZShjYXNlID0gZmN0X2NvbGxhcHNlKGNhc2UpKSAlPiUgCiAgY291bnQoY2FzZSkKYGBgClRoaXMgY29sbGFwc2VzIHZhcmlhYmxlcyBhbmQgc2hvd3MgYSB0YWJsZSBvZiBob3cgbWFueSBzaG9vdGluZ3MgZWFjaCBwbGFjZSBoYWQuCgpgYGB7ciBlY2hvPVRSVUV9CnNob290aW5ncyAlPiUgCiAgcGxvdF9seSh4ID0gfnllYXIpICU+JSAKICBhZGRfaGlzdG9ncmFtKG5iaW5zeCA9IDQwKQpgYGAKVGhpcyBoaXN0b2dyYW0gc2hvd3MgdGhlIG51bWJlciBvZiBzaG9vdGluZ3Mgb3ZlciB0aGUgeWVhcnMuCgpgYGB7ciBlY2hvPVRSVUV9CnNob290aW5ncyAlPiUgCiAgbXV0YXRlKHJhY2UgPSBhc19mYWN0b3IocmFjZSkpICU+JSAKICBtdXRhdGUocmFjZSA9IGZjdF9jb2xsYXBzZShyYWNlLAogICAgICAgICAgICAgVW5rbm93biA9IGMoIi0iLCAiT3RoZXIiLCAidW5jbGVhciIpKSkgJT4lCiAgY291bnQocmFjZSkKYGBgCkFub3RoZXIgY29sbGFwc2Ugb2YgdmFyaWFibGVzIGFuZCB0YWJsZSBzaG93aW5nIHNob290aW5ncyBwZXIgcmFjZS4KYGBge3J9CnNob290aW5ncyAlPiUKICBtdXRhdGUoZ2VuZGVyID0gYXNfZmFjdG9yKGdlbmRlcikpICU+JSAKICBtdXRhdGUoZ2VuZGVyID0gZmN0X2NvbGxhcHNlKGdlbmRlciwKICAgICAgICAgICAgIFVua25vd24gPSBjKCItIiwgIk1hbGUgJiBGZW1hbGUiKSkpICU+JQogIGNvdW50KGdlbmRlcikKYGBgCkFub3RoZXIgY29sbGFwc2Ugb2YgdmFyaWFibGVzIGFuZCB0YWJsZSBzaG93aW5nIHNob290ZXJzIGFzIHBlciB0aGllciBnZW5kZXIuCmBgYHtyfQpzaG9vdGluZ3MgJT4lCiAgcGxvdF9seSh4ID0gfmdlbmRlciwgeSA9IH5yYWNlKSAlPiUKICBhZGRfaGlzdG9ncmFtMmRjb250b3VyKCkKYGBgClRoaXMgaXMgYSBoZWF0IG1hcCBzaG93aW5nIHRoZSByYWNlIGFuZCBnZW5kZXIgb2YgdGhlIHNob290ZXJzLgoKYGBge3J9CnNob290aW5ncyAlPiUgCiAgbXV0YXRlKGdlbmRlciA9IGFzX2ZhY3RvcihnZW5kZXIpKSAlPiUgCiAgbXV0YXRlKGdlbmRlciA9IGZjdF9jb2xsYXBzZShnZW5kZXIpKSAlPiUKICBjb3VudChnZW5kZXIpCnNob290aW5ncyAlPiUKICBtdXRhdGUoYWdlX29mX3Nob290ZXIgPSBhc19mYWN0b3IoYWdlX29mX3Nob290ZXIpKSAlPiUgCiAgbXV0YXRlKGFnZV9vZl9zaG9vdGVyID0gZmN0X2NvbGxhcHNlKGFnZV9vZl9zaG9vdGVyKSkgJT4lCiAgY291bnQoYWdlX29mX3Nob290ZXIpCnNob290aW5ncyAlPiUKICBwbG90X2x5KHggPSB+Z2VuZGVyLCB5ID0gfmFnZV9vZl9zaG9vdGVyKSAlPiUKICBhZGRfaGlzdG9ncmFtMmRjb250b3VyKCkKYGBgClRoaXMgaXMgYSBoZWF0IG1hcCB0aGF0IHNob3dzIHRoZSBnZW5kZXIgYW5kIGFnZS4KCmBgYHtyfQpzaG9vdGluZ3MgJT4lIAogIHBsb3RfbHkoeCA9IH5pbmp1cmVkLCAKICAgICAgICAgIHkgPSB+ZmF0YWxpdGllcywKICAgICAgICAgICBob3ZlcmluZm8gPSAidGV4dCIsCiAgICAgICAgICB0ZXh0ID0gfnBhc3RlKCJGYXRhbGl0aWVzIHBlciBzaG9vdGluZzoiKSkgJT4lCiAgYWRkX21hcmtlcnMoc2hvd2xlZ2VuZCA9IEYpICU+JQpsYXlvdXQodGl0bGUgPSAiTnVtYmVyIG9mIGZhdGFsaXRpZXMgcGVyIHNob290aW5nIGJ5IHllYXIiLAogICB4YXhpcyA9IGxpc3QodGl0bGUgPSAiTnVtYmVyIGluanVyZWQiKSwKICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIk51bWJlciBvZiBmYXRhbGl0aWVzIHBlciBzaG9vdGluZyIpKQpgYGAKVGhpcyBzY2F0dGVycGxvdCBzaG93cyB0aGUgbnVtYmVyIG9mIGZhdGFsaXRpZXMgYnkgbnVtYmVyIGluanVyZWQuCgpgYGB7cn0KbnVtX3Blcl95ZWFyIDwtIHNob290aW5ncyAlPiUgCiAgZmlsdGVyKGZhdGFsaXRpZXMgPiAzKSAlPiUgCiAgY291bnQoeWVhcikgJT4lIAogIGZpbHRlcih5ZWFyIDwgMjAxOSkKCm51bV9wZXJfeWVhcgpgYGAKVGhpcyBpcyBzZXR0aW5nIHVwIGEgcmVncmVzc2lvbi4KCmBgYHtyfQpmYXRhbGl0aWVzX3Blcl9pbmNpZGVudF9tb2RlbDIgPC0gbG0oZmF0YWxpdGllcyB+IHllYXIsIGRhdGEgPSBzaG9vdGluZ3MpCgpgYGAKCmBgYHtyfQpmYXRhbGl0aWVzX3Blcl9pbmNpZGVudF9tb2RlbDIKYGBgClRoaXMgaXMgYSBwcmludCBvdXQgb2YgdGhlIG1vZGVsLgoKYGBge3J9CnRpZHkoZmF0YWxpdGllc19wZXJfaW5jaWRlbnRfbW9kZWwyKQpnbGFuY2UoZmF0YWxpdGllc19wZXJfaW5jaWRlbnRfbW9kZWwyKQpgYGAKVGhlc2UgYXJlIHRoZSBzdGF0cyBmb3IgdGhlIHJlZ3Jlc3Npb24uCmBgYHtyfQpzaG9vdGluZ3MgJT4lIAogIHBsb3RfbHkoeCA9IH55ZWFyLCAKICAgICAgICAgIHkgPSB+ZmF0YWxpdGllcykgJT4lIAogIGFkZF9tYXJrZXJzKCkgJT4lCiAgYWRkX2xpbmVzKHkgPSB+Zml0dGVkKGZhdGFsaXRpZXNfcGVyX2luY2lkZW50X21vZGVsMikpCmBgYApUaGlzIHNjYXR0ZXJwbG90IHNob3dzIHRoZSBmYXRhbGl0aWVzIG92ZXIgdGhlIHllYXJzIGR1ZSB0byB0aGUgc2hvb3RpbmdzLgoKCgoKCgoKCgoKCgoKCgoKCgoK