Dane pochodzą z serwisu Kaggle i dotyczą masowych strzelanin w Stanach Zjednoczonych od 1966 do 2017 roku. Stany Zjednoczone były świadkami 398 masowych strzelanin w ciągu ostatnich 50 lat, które doprowadziły do śmierci 1996 osób i 2488 zostało rannych. Ostatnia i najgorsza strzelanina z 2 października 2017 r. w której zostały zabite 58, a rannych 515 osób. Liczba osób rannych w tym ataku jest większa niż włączna liczba osób rannych we wszystkich masowych strzelaninach w 2015 i 2016 roku. Średnia liczba masowych strzelanin rocznie wynosi 7 w ciągu ostatnich 50 lat, które spowodowałyby 39 ofiar śmiertelnych i 48 rannych rocznie.
Opis zmiennych:
Zbiór danych zawiera nr seryjny, tytuł strzelaniny, lokalizację, datę, podsumowanie napastnika, ofiary śmiertelne, ofiary ranne, ofiary ogółem, problem zdrowia psychicznego, informacje o rasie, współrzędnych geograficznych.
Także zostały dodane:
library(ggplot2)
library(plotly)
library(plyr)
library(lubridate)
library(manhattanly)
library(flexdashboard)
setwd("E:\\OneDrive\\UW\\5_Advanced_R\\7_markdown\\praca_dom_dash")
dane <- read.csv("Mass Shootings Dataset Ver 5.csv",
header = T,
stringsAsFactors = F)dane$Date <- as.Date(dane$Date, format = "%m/%d/%Y")
dane$Year <- year(dane$Date)
dane$Month <- month(dane$Date)
dane$Age <- as.integer(dane$Age)
dane$Employeed..Y.N. <- as.logical(dane$Employeed..Y.N.)
# Standaryzacja poziomów faktora "Gender"
dane$Gender[dane$Gender=="M"] <- "Male"
dane$Gender[dane$Gender=="F"] <- "Female"
dane$Gender[dane$Gender=="M/F"] <- "Male/Female"
dane$Gender <- as.factor(dane$Gender)
# Standaryzacja poziomów faktora "Mental.Health.Issues"
dane$Mental.Health.Issues[dane$Mental.Health.Issues=="Unclear" | dane$Mental.Health.Issues=="unknown"] <- "Unknown"
dane$Mental.Health.Issues <- as.factor(dane$Mental.Health.Issues)
# Standaryzacja poziomów faktora "Race"
dane$Race[dane$Race=="Asian" | dane$Race=="Asian American" | dane$Race=="Asian American/Some other race"] <- "Asian"
dane$Race[dane$Race=="black" | dane$Race=="Black American or African American" | dane$Race=="Black American or African American/Unknown"] <- "Black"
dane$Race[dane$Race=="Native American or Alaska Native"] <- "Native American"
dane$Race[dane$Race=="Some other race" | dane$Race=="Two or more races" | dane$Race=="Unknown" | dane$Race==""] <- "Other"
dane$Race[dane$Race=="white" | dane$Race=="White American or European American" | dane$Race=="White American or European American/Some other Race"] <- "White"
dane$Race <- as.factor(dane$Race)
# Standaryzacja poziomów faktora "Open.Close.Location"
dane$Open.Close.Location[dane$Open.Close.Location==""] <- "Unknown"
dane$Open.Close.Location[dane$Open.Close.Location=="Open+CLose"] <- "Open+Close"
dane$Open.Close.Location <- as.factor(dane$Open.Close.Location)
dane$Cause[dane$Cause==""] <- "unknown"
dane$Cause[dane$Cause=="domestic dispute"] <- "domestic disputer"
dane$Cause <- as.factor(dane$Cause)'data.frame': 323 obs. of 23 variables:
$ S. : int 1 2 3 4 5 6 7 8 9 10 ...
$ Title : chr "Texas church mass shooting" "Walmart shooting in suburban Denver" "Edgewood businees park shooting" "Las Vegas Strip mass shooting" ...
$ Location : chr "Sutherland Springs, TX" "Thornton, CO" "Edgewood, MD" "Las Vegas, NV" ...
$ Date : Date, format: "2017-11-05" "2017-11-01" ...
$ Incident.Area : chr "Church" "Wal-Mart" "Remodeling Store" "Las Vegas Strip Concert outside Mandala Bay" ...
$ Open.Close.Location : Factor w/ 4 levels "Close","Open",..: 1 2 1 2 1 1 1 1 2 1 ...
$ Target : chr "random" "random" "coworkers" "random" ...
$ Cause : Factor w/ 15 levels "anger","breakup",..: 15 15 15 15 15 13 14 15 8 13 ...
$ Summary : chr "Devin Patrick Kelley, 26, an ex-air force officer, shot and killed 26 people and wounded 20 at a church in Texa"| __truncated__ "Scott Allen Ostrem, 47, walked into a Walmart in a suburb north of Denver and fatally shot two men and a woman,"| __truncated__ "Radee Labeeb Prince, 37, fatally shot three people and wounded two others around 9am at Advance Granite Solutio"| __truncated__ "Stephen Craig Paddock, opened fire from the 32nd floor of Manadalay Bay hotel at Last Vegas concert goers for n"| __truncated__ ...
$ Fatalities : int 26 3 3 59 3 3 5 3 3 5 ...
$ Injured : int 20 0 3 527 2 0 0 0 0 6 ...
$ Total.victims : int 46 3 6 585 5 3 5 3 3 11 ...
$ Policeman.Killed : int 0 0 0 1 0 NA NA 1 NA NA ...
$ Age : int 26 47 37 64 38 24 45 43 39 26 ...
$ Employeed..Y.N. : logi NA NA NA NA TRUE TRUE ...
$ Employed.at : chr "" "" "Advance Granite Store" "" ...
$ Mental.Health.Issues: Factor w/ 3 levels "No","Unknown",..: 1 1 1 2 3 2 2 3 2 3 ...
$ Race : Factor w/ 6 levels "Asian","Black",..: 6 6 2 6 1 6 5 6 2 3 ...
$ Gender : Factor w/ 4 levels "Female","Male",..: 2 2 2 2 2 2 2 2 2 2 ...
$ Latitude : num NA NA NA 36.2 NA ...
$ Longitude : num NA NA NA -115 NA ...
$ Year : num 2017 2017 2017 2017 2017 ...
$ Month : num 11 11 10 10 6 6 6 5 4 1 ...
Przejście do następnej strony Analiza interaktywna
Wykresy pudełkowe poszczególnych zmienych
---
title: "Analiza masowych strzelanin w USA"
output:
flexdashboard::flex_dashboard:
navbar:
- { title: "V.Sukhovetskyi",
href: "https://www.linkedin.com/in/sukhovetskyi",
align: right }
social: menu
theme: simplex
source_code: embed
#orientation: columns
vertical_layout: scroll
css: styles.css
---
Przygotawanie danych
=======================================================================
Row
-----------------------------------------------------------------------
### Opis zbioru danych {data-height=235}
Dane pochodzą z serwisu [Kaggle](https://www.kaggle.com/zusmani/us-mass-shootings-last-50-years) i dotyczą masowych strzelanin w Stanach Zjednoczonych od 1966 do 2017 roku. Stany Zjednoczone były świadkami 398 masowych strzelanin w ciągu ostatnich 50 lat, które doprowadziły do śmierci 1996 osób i 2488 zostało rannych. Ostatnia i najgorsza strzelanina z 2 października 2017 r. w której zostały zabite 58, a rannych 515 osób. Liczba osób rannych w tym ataku jest większa niż włączna liczba osób rannych we wszystkich masowych strzelaninach w 2015 i 2016 roku. Średnia liczba masowych strzelanin rocznie wynosi 7 w ciągu ostatnich 50 lat, które spowodowałyby 39 ofiar śmiertelnych i 48 rannych rocznie.
**Opis zmiennych:**
Zbiór danych zawiera nr seryjny, tytuł strzelaniny, lokalizację, datę, podsumowanie napastnika, ofiary śmiertelne, ofiary ranne, ofiary ogółem, problem zdrowia psychicznego, informacje o rasie, współrzędnych geograficznych.
Także zostały dodane:
- Miejśce incydentów (gdzie doszło do incydentu),
- Położenie otwarte / zamknięte (wewnątrz budynku lub otwartej przestrzeni)
- Cel (potencjalna grupa lub firma),
- Przyczyna (terroryzm, zbrodnia z nienawiści, zabawa (bez oczywistego powodu itp.),
- Policjant zabity (ilu na służbie zostało zabitych),
- Wiek (wiek strzelca),
- Zatrudniony (Tak / Nie),
- Miejsce zatrudnienia (nazwa pracodawcy).
-----------------------------------------------------------------------
### Wczytywanie danych i bibliotek {data-height=235}
```{r echo=TRUE}
library(ggplot2)
library(plotly)
library(plyr)
library(lubridate)
library(manhattanly)
library(flexdashboard)
setwd("E:\\OneDrive\\UW\\5_Advanced_R\\7_markdown\\praca_dom_dash")
dane <- read.csv("Mass Shootings Dataset Ver 5.csv",
header = T,
stringsAsFactors = F)
```
-----------------------------------------------------------------------
### Formatowanie danych {data-height=580}
```{r echo=TRUE}
dane$Date <- as.Date(dane$Date, format = "%m/%d/%Y")
dane$Year <- year(dane$Date)
dane$Month <- month(dane$Date)
dane$Age <- as.integer(dane$Age)
dane$Employeed..Y.N. <- as.logical(dane$Employeed..Y.N.)
# Standaryzacja poziomów faktora "Gender"
dane$Gender[dane$Gender=="M"] <- "Male"
dane$Gender[dane$Gender=="F"] <- "Female"
dane$Gender[dane$Gender=="M/F"] <- "Male/Female"
dane$Gender <- as.factor(dane$Gender)
# Standaryzacja poziomów faktora "Mental.Health.Issues"
dane$Mental.Health.Issues[dane$Mental.Health.Issues=="Unclear" | dane$Mental.Health.Issues=="unknown"] <- "Unknown"
dane$Mental.Health.Issues <- as.factor(dane$Mental.Health.Issues)
# Standaryzacja poziomów faktora "Race"
dane$Race[dane$Race=="Asian" | dane$Race=="Asian American" | dane$Race=="Asian American/Some other race"] <- "Asian"
dane$Race[dane$Race=="black" | dane$Race=="Black American or African American" | dane$Race=="Black American or African American/Unknown"] <- "Black"
dane$Race[dane$Race=="Native American or Alaska Native"] <- "Native American"
dane$Race[dane$Race=="Some other race" | dane$Race=="Two or more races" | dane$Race=="Unknown" | dane$Race==""] <- "Other"
dane$Race[dane$Race=="white" | dane$Race=="White American or European American" | dane$Race=="White American or European American/Some other Race"] <- "White"
dane$Race <- as.factor(dane$Race)
# Standaryzacja poziomów faktora "Open.Close.Location"
dane$Open.Close.Location[dane$Open.Close.Location==""] <- "Unknown"
dane$Open.Close.Location[dane$Open.Close.Location=="Open+CLose"] <- "Open+Close"
dane$Open.Close.Location <- as.factor(dane$Open.Close.Location)
dane$Cause[dane$Cause==""] <- "unknown"
dane$Cause[dane$Cause=="domestic dispute"] <- "domestic disputer"
dane$Cause <- as.factor(dane$Cause)
```
-----------------------------------------------------------------------
### Struktura danych
```{r}
str(dane)
```
Przejście do następnej strony [Analiza interaktywna](#wykresy-pudekowe)
Wykresy pudełkowe {data-navmenu="Interaktywna analiza"}
=======================================================================
**Wykresy pudełkowe poszczególnych zmienych**
Row {.tabset .tabset-fade}
-------------------------------------
### Liczba ofiar według rasy
```{r}
plot_ly(data = dane[dane$Title!='Las Vegas Strip mass shooting',],
type = 'box',
mode = 'markers',
x = ~`Total.victims`,
color =~Race,
alpha = 0.9) %>%
layout(title = "Liczba ofiar według rasy (bez masowej strzelaniny w Las Vegas)",
showlegend = T,
xaxis = list(title = "Liczba ofiar"),
yaxis = list(title = ""))
```
Row {.tabset .tabset-fade}
-----------------------------------------------------------------------
### Wiek
```{r}
library(ggplot2)
library(plotly)
plot_ly(y = ~dane$Age, type = "box", boxpoints = "all", jitter = 0.3,
pointpos = -1.8)
```
### Ogólna liczba ofiar
```{r}
plot_ly(y = ~dane$Total.victims, type = "box", boxpoints = "all", jitter = 0.3,
pointpos = -1.8)
```
### Liczba osób rannych
```{r}
plot_ly(y = ~dane$Injured, type = "box", boxpoints = "all", jitter = 0.3,
pointpos = -1.8)
```
### Liczba osób zabitych
```{r}
plot_ly(y = ~dane$Fatalities, type = "box", boxpoints = "all", jitter = 0.3,
pointpos = -1.8)
```
Histogramy {data-navmenu="Interaktywna analiza"}
=======================================================================
Column
-------------------------------------
### Łączna liczba ofiar przez lata
```{r}
plot_ly(data = dane, type = 'bar', mode = 'markers', hoverinfo = 'text',
x = ~Year,
y = ~ Total.victims,
color = '#7a0101',
alpha = 0.9,
text = ~paste( 'Fatalities : ', Fatalities,'\n Injured : ', Injured)) %>%
layout(title = "Łączna liczba ofiar przez lata",
xaxis = list(title = ""),
yaxis = list(title = "Łączna liczba ofiar"))
```
Column{.tabset .tabset-fade}
-------------------------------------
### Liczba incydentów przez lata
```{r}
plot_ly(data = dane, type = 'histogram', mode = 'markers', x = ~Year, alpha = 0.6) %>%
layout(title = "Liczba incydentów przez lata",
xaxis = list(title = ""),
yaxis = list(title = "Liczba incydentów"))
```
### Liczba incydentów przez miesiące
```{r}
plot_ly(data = dane, type = 'histogram', mode = 'markers', x = ~Month, alpha = 0.6) %>%
layout(title = "Liczba incydentów przez miesiące",
xaxis = list(title = ""),
yaxis = list(title = "Liczba incydentów"))
```
Mapy interaktywne {data-navmenu="Interaktywna analiza"}
=======================================================================
Column
-------------------------------------
### Mapa zabójstw
```{r}
library(leaflet)
leaflet(data = dane) %>% addProviderTiles(providers$CartoDB.Positron) %>%
fitBounds(-124, 30, -66, 43) %>%
addCircles(color="#7a0101", lng = ~Longitude, lat = ~Latitude, weight = 1,
radius = ~sqrt(`Injured`) * 30000, popup = ~Summary
)
```