Przygotawanie danych

Row

Opis zbioru danych

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:

  • 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

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

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

'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

Wykresy pudełkowe poszczególnych zmienych

Row

Liczba ofiar według rasy

Row

Wiek

Ogólna liczba ofiar

Liczba osób rannych

Liczba osób zabitych

Histogramy

Column

Łączna liczba ofiar przez lata

Column

Liczba incydentów przez lata

Liczba incydentów przez miesiące

Mapy interaktywne

Column

Mapa zabójstw

---
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 ) ```