Hate Crimes Dataset

This dataset looks at all types of hate crimes in New York counties by the type of hate crime from 2010 to 2016.

What can we learn from the data set?

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.3     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.3     ✔ tibble    3.2.1
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
setwd("/Users/nnokigbo/Downloads")
hatecrimes <- read_csv("hateCrimes2010.csv")
## Rows: 423 Columns: 44
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr  (2): County, Crime Type
## dbl (42): Year, Anti-Male, Anti-Female, Anti-Transgender, Anti-Gender Identi...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

Cleaning up data:

Make all headers lowercase and remove spaces

names(hatecrimes) <- tolower(names(hatecrimes))
names(hatecrimes) <- gsub(" ","", names(hatecrimes))
head(hatecrimes)
## # A tibble: 6 × 44
##   county    year crimetype          `anti-male` `anti-female` `anti-transgender`
##   <chr>    <dbl> <chr>                    <dbl>         <dbl>              <dbl>
## 1 Albany    2016 Crimes Against Pe…           0             0                  0
## 2 Albany    2016 Property Crimes              0             0                  0
## 3 Allegany  2016 Property Crimes              0             0                  0
## 4 Bronx     2016 Crimes Against Pe…           0             0                  4
## 5 Bronx     2016 Property Crimes              0             0                  0
## 6 Broome    2016 Crimes Against Pe…           0             0                  0
## # ℹ 38 more variables: `anti-genderidentityexpression` <dbl>,
## #   `anti-age*` <dbl>, `anti-white` <dbl>, `anti-black` <dbl>,
## #   `anti-americanindian/alaskannative` <dbl>, `anti-asian` <dbl>,
## #   `anti-nativehawaiian/pacificislander` <dbl>,
## #   `anti-multi-racialgroups` <dbl>, `anti-otherrace` <dbl>,
## #   `anti-jewish` <dbl>, `anti-catholic` <dbl>, `anti-protestant` <dbl>,
## #   `anti-islamic(muslim)` <dbl>, `anti-multi-religiousgroups` <dbl>, …

Selecting only certain hate crimes

summary(hatecrimes)
##     county               year       crimetype           anti-male       
##  Length:423         Min.   :2010   Length:423         Min.   :0.000000  
##  Class :character   1st Qu.:2011   Class :character   1st Qu.:0.000000  
##  Mode  :character   Median :2013   Mode  :character   Median :0.000000  
##                     Mean   :2013                      Mean   :0.007092  
##                     3rd Qu.:2015                      3rd Qu.:0.000000  
##                     Max.   :2016                      Max.   :1.000000  
##   anti-female      anti-transgender  anti-genderidentityexpression
##  Min.   :0.00000   Min.   :0.00000   Min.   :0.00000              
##  1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.00000              
##  Median :0.00000   Median :0.00000   Median :0.00000              
##  Mean   :0.01655   Mean   :0.04728   Mean   :0.05674              
##  3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.00000              
##  Max.   :1.00000   Max.   :5.00000   Max.   :3.00000              
##    anti-age*         anti-white        anti-black    
##  Min.   :0.00000   Min.   : 0.0000   Min.   : 0.000  
##  1st Qu.:0.00000   1st Qu.: 0.0000   1st Qu.: 0.000  
##  Median :0.00000   Median : 0.0000   Median : 1.000  
##  Mean   :0.05201   Mean   : 0.3357   Mean   : 1.761  
##  3rd Qu.:0.00000   3rd Qu.: 0.0000   3rd Qu.: 2.000  
##  Max.   :9.00000   Max.   :11.0000   Max.   :18.000  
##  anti-americanindian/alaskannative   anti-asian    
##  Min.   :0.000000                  Min.   :0.0000  
##  1st Qu.:0.000000                  1st Qu.:0.0000  
##  Median :0.000000                  Median :0.0000  
##  Mean   :0.007092                  Mean   :0.1773  
##  3rd Qu.:0.000000                  3rd Qu.:0.0000  
##  Max.   :1.000000                  Max.   :8.0000  
##  anti-nativehawaiian/pacificislander anti-multi-racialgroups anti-otherrace
##  Min.   :0                           Min.   :0.00000         Min.   :0     
##  1st Qu.:0                           1st Qu.:0.00000         1st Qu.:0     
##  Median :0                           Median :0.00000         Median :0     
##  Mean   :0                           Mean   :0.08511         Mean   :0     
##  3rd Qu.:0                           3rd Qu.:0.00000         3rd Qu.:0     
##  Max.   :0                           Max.   :3.00000         Max.   :0     
##   anti-jewish     anti-catholic     anti-protestant   anti-islamic(muslim)
##  Min.   : 0.000   Min.   : 0.0000   Min.   :0.00000   Min.   : 0.0000     
##  1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.:0.00000   1st Qu.: 0.0000     
##  Median : 0.000   Median : 0.0000   Median :0.00000   Median : 0.0000     
##  Mean   : 3.981   Mean   : 0.2695   Mean   :0.02364   Mean   : 0.4704     
##  3rd Qu.: 3.000   3rd Qu.: 0.0000   3rd Qu.:0.00000   3rd Qu.: 0.0000     
##  Max.   :82.000   Max.   :12.0000   Max.   :1.00000   Max.   :10.0000     
##  anti-multi-religiousgroups anti-atheism/agnosticism
##  Min.   : 0.00000           Min.   :0               
##  1st Qu.: 0.00000           1st Qu.:0               
##  Median : 0.00000           Median :0               
##  Mean   : 0.07565           Mean   :0               
##  3rd Qu.: 0.00000           3rd Qu.:0               
##  Max.   :10.00000           Max.   :0               
##  anti-religiouspracticegenerally anti-otherreligion anti-buddhist
##  Min.   :0.000000                Min.   :0.000      Min.   :0    
##  1st Qu.:0.000000                1st Qu.:0.000      1st Qu.:0    
##  Median :0.000000                Median :0.000      Median :0    
##  Mean   :0.007092                Mean   :0.104      Mean   :0    
##  3rd Qu.:0.000000                3rd Qu.:0.000      3rd Qu.:0    
##  Max.   :2.000000                Max.   :4.000      Max.   :0    
##  anti-easternorthodox(greek,russian,etc.)   anti-hindu      
##  Min.   :0.000000                         Min.   :0.000000  
##  1st Qu.:0.000000                         1st Qu.:0.000000  
##  Median :0.000000                         Median :0.000000  
##  Mean   :0.002364                         Mean   :0.002364  
##  3rd Qu.:0.000000                         3rd Qu.:0.000000  
##  Max.   :1.000000                         Max.   :1.000000  
##  anti-jehovahswitness  anti-mormon anti-otherchristian   anti-sikh
##  Min.   :0            Min.   :0    Min.   :0.00000     Min.   :0  
##  1st Qu.:0            1st Qu.:0    1st Qu.:0.00000     1st Qu.:0  
##  Median :0            Median :0    Median :0.00000     Median :0  
##  Mean   :0            Mean   :0    Mean   :0.01655     Mean   :0  
##  3rd Qu.:0            3rd Qu.:0    3rd Qu.:0.00000     3rd Qu.:0  
##  Max.   :0            Max.   :0    Max.   :3.00000     Max.   :0  
##  anti-hispanic       anti-arab       anti-otherethnicity/nationalorigin
##  Min.   : 0.0000   Min.   :0.00000   Min.   : 0.0000                   
##  1st Qu.: 0.0000   1st Qu.:0.00000   1st Qu.: 0.0000                   
##  Median : 0.0000   Median :0.00000   Median : 0.0000                   
##  Mean   : 0.3735   Mean   :0.06619   Mean   : 0.2837                   
##  3rd Qu.: 0.0000   3rd Qu.:0.00000   3rd Qu.: 0.0000                   
##  Max.   :17.0000   Max.   :2.00000   Max.   :19.0000                   
##  anti-non-hispanic*  anti-gaymale    anti-gayfemale   anti-gay(maleandfemale)
##  Min.   :0          Min.   : 0.000   Min.   :0.0000   Min.   :0.0000         
##  1st Qu.:0          1st Qu.: 0.000   1st Qu.:0.0000   1st Qu.:0.0000         
##  Median :0          Median : 0.000   Median :0.0000   Median :0.0000         
##  Mean   :0          Mean   : 1.499   Mean   :0.2411   Mean   :0.1017         
##  3rd Qu.:0          3rd Qu.: 1.000   3rd Qu.:0.0000   3rd Qu.:0.0000         
##  Max.   :0          Max.   :36.000   Max.   :8.0000   Max.   :4.0000         
##  anti-heterosexual  anti-bisexual      anti-physicaldisability
##  Min.   :0.000000   Min.   :0.000000   Min.   :0.00000        
##  1st Qu.:0.000000   1st Qu.:0.000000   1st Qu.:0.00000        
##  Median :0.000000   Median :0.000000   Median :0.00000        
##  Mean   :0.002364   Mean   :0.004728   Mean   :0.01182        
##  3rd Qu.:0.000000   3rd Qu.:0.000000   3rd Qu.:0.00000        
##  Max.   :1.000000   Max.   :1.000000   Max.   :1.00000        
##  anti-mentaldisability totalincidents    totalvictims    totaloffenders  
##  Min.   :0.000000      Min.   :  1.00   Min.   :  1.00   Min.   :  1.00  
##  1st Qu.:0.000000      1st Qu.:  1.00   1st Qu.:  1.00   1st Qu.:  1.00  
##  Median :0.000000      Median :  3.00   Median :  3.00   Median :  3.00  
##  Mean   :0.009456      Mean   : 10.09   Mean   : 10.48   Mean   : 11.77  
##  3rd Qu.:0.000000      3rd Qu.: 10.00   3rd Qu.: 10.00   3rd Qu.: 11.00  
##  Max.   :1.000000      Max.   :101.00   Max.   :106.00   Max.   :113.00

Best to select hatecrimes with a max of nine.

newhc <- hatecrimes |>
  select(county, year, 'anti-black', 'anti-white', 'anti-jewish', 'anti-catholic','anti-age*','anti-islamic(muslim)', 'anti-multi-religiousgroups', 'anti-gaymale', 'anti-hispanic', 'anti-otherethnicity/nationalorigin') |>
  group_by(county, year)
head(newhc)
## # A tibble: 6 × 12
## # Groups:   county, year [4]
##   county    year `anti-black` `anti-white` `anti-jewish` `anti-catholic`
##   <chr>    <dbl>        <dbl>        <dbl>         <dbl>           <dbl>
## 1 Albany    2016            1            0             0               0
## 2 Albany    2016            2            0             0               0
## 3 Allegany  2016            1            0             0               0
## 4 Bronx     2016            0            1             0               0
## 5 Bronx     2016            0            1             1               0
## 6 Broome    2016            1            0             0               0
## # ℹ 6 more variables: `anti-age*` <dbl>, `anti-islamic(muslim)` <dbl>,
## #   `anti-multi-religiousgroups` <dbl>, `anti-gaymale` <dbl>,
## #   `anti-hispanic` <dbl>, `anti-otherethnicity/nationalorigin` <dbl>

Check the dimensions and summary to make sure no missing values

dim(newhc)
## [1] 423  12
summary(newhc)
##     county               year        anti-black       anti-white     
##  Length:423         Min.   :2010   Min.   : 0.000   Min.   : 0.0000  
##  Class :character   1st Qu.:2011   1st Qu.: 0.000   1st Qu.: 0.0000  
##  Mode  :character   Median :2013   Median : 1.000   Median : 0.0000  
##                     Mean   :2013   Mean   : 1.761   Mean   : 0.3357  
##                     3rd Qu.:2015   3rd Qu.: 2.000   3rd Qu.: 0.0000  
##                     Max.   :2016   Max.   :18.000   Max.   :11.0000  
##   anti-jewish     anti-catholic       anti-age*       anti-islamic(muslim)
##  Min.   : 0.000   Min.   : 0.0000   Min.   :0.00000   Min.   : 0.0000     
##  1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.:0.00000   1st Qu.: 0.0000     
##  Median : 0.000   Median : 0.0000   Median :0.00000   Median : 0.0000     
##  Mean   : 3.981   Mean   : 0.2695   Mean   :0.05201   Mean   : 0.4704     
##  3rd Qu.: 3.000   3rd Qu.: 0.0000   3rd Qu.:0.00000   3rd Qu.: 0.0000     
##  Max.   :82.000   Max.   :12.0000   Max.   :9.00000   Max.   :10.0000     
##  anti-multi-religiousgroups  anti-gaymale    anti-hispanic    
##  Min.   : 0.00000           Min.   : 0.000   Min.   : 0.0000  
##  1st Qu.: 0.00000           1st Qu.: 0.000   1st Qu.: 0.0000  
##  Median : 0.00000           Median : 0.000   Median : 0.0000  
##  Mean   : 0.07565           Mean   : 1.499   Mean   : 0.3735  
##  3rd Qu.: 0.00000           3rd Qu.: 1.000   3rd Qu.: 0.0000  
##  Max.   :10.00000           Max.   :36.000   Max.   :17.0000  
##  anti-otherethnicity/nationalorigin
##  Min.   : 0.0000                   
##  1st Qu.: 0.0000                   
##  Median : 0.0000                   
##  Mean   : 0.2837                   
##  3rd Qu.: 0.0000                   
##  Max.   :19.0000

Conver from wide to long format

Use pivot_longer to make datset long

hatelong <- newhc |>
  pivot_longer(cols = 3:12, names_to = "victim_cat", values_to = "crimecount")

Now use the long format to create a facet plot

hatecrimeplot <- hatelong |>
  ggplot(aes(year, crimecount, color = victim_cat)) +
  geom_point() +
  facet_wrap(~victim_cat)
hatecrimeplot

## Look deeper into crimes against blacks, gay males, and jews

BLack people, gay men, and jewish people seem to have the highestoffense rate

hatenew <- hatelong |>
  filter( victim_cat %in% c("anti-black", "anti-jewish", "anti-gaymale"))|>
  group_by(year, county) |>
  arrange(desc(crimecount))
hatenew
## # A tibble: 1,269 × 4
## # Groups:   year, county [277]
##    county   year victim_cat  crimecount
##    <chr>   <dbl> <chr>            <dbl>
##  1 Kings    2012 anti-jewish         82
##  2 Kings    2016 anti-jewish         51
##  3 Suffolk  2014 anti-jewish         48
##  4 Suffolk  2012 anti-jewish         48
##  5 Kings    2011 anti-jewish         44
##  6 Kings    2013 anti-jewish         41
##  7 Kings    2010 anti-jewish         39
##  8 Nassau   2011 anti-jewish         38
##  9 Suffolk  2013 anti-jewish         37
## 10 Nassau   2016 anti-jewish         36
## # ℹ 1,259 more rows

Plot these three hatecrimes together

Use the following commands to finalize your barplot: - position = “dodge” makes side-by-side bars, rather than stacked bars - stat = “identity” allows you to plot each set of bars for each year between 2010 and 2016 - ggtitle gives the plot a title - labs gives a title to the legend

plot2 <- hatenew |>
  ggplot() +
  geom_bar(aes(x=year, y=crimecount, fill = victim_cat),
      position = "dodge", stat = "identity") +
  labs(fill = "Hate Crime Type",
       y = "Number of Hate Crime Incidents",
       title = "Hate Crime Type in NY Counties Between 2010-2016",
       caption = "Source: NY State Division of Criminal Justice Services")
plot2

In 2012, hate crimes against jewish people spiked. Other than that, there was a consistent upward trend.

What about counties?

plot3 <- hatenew |>
  ggplot() +
  geom_bar(aes(x=county, y=crimecount, fill = victim_cat),
      position = "dodge", stat = "identity") +
  labs(fill = "Hate Crime Type",
       y = "Number of Hate Crime Incidents",
       title = "Hate Crime Type in NY Counties Between 2010-2016",
       caption = "Source: NY State Division of Criminal Justice Services")
plot3

## Too many counties

There are too many counties so let’s pick the top 5 counties with the highest ones.

counties <- hatenew |>
  group_by(year, county)|>
  summarize(sum = sum(crimecount)) |>
  arrange(desc(sum))
## `summarise()` has grouped output by 'year'. You can override using the
## `.groups` argument.
head(counties)
## # A tibble: 6 × 3
## # Groups:   year [6]
##    year county   sum
##   <dbl> <chr>  <dbl>
## 1  2012 Kings    136
## 2  2010 Kings    110
## 3  2016 Kings    101
## 4  2013 Kings     96
## 5  2014 Kings     94
## 6  2015 Kings     90
counties2 <- hatenew |>
  group_by(county)|>
  summarize(sum = sum(crimecount)) |>
  slice_max(order_by = sum, n=5)
counties2
## # A tibble: 5 × 2
##   county     sum
##   <chr>    <dbl>
## 1 Kings      713
## 2 New York   459
## 3 Suffolk    360
## 4 Nassau     298
## 5 Queens     235

Now we have the 5 counties with the largest hatecrime counts.

plot4 <- hatenew |>
  filter(county %in% c("Kings", "New York", "Suffolk", "Nassau", "Queens")) |>
  ggplot() +
  geom_bar(aes(x=county, y=crimecount, fill = victim_cat),
      position = "dodge", stat = "identity") +
  labs(y = "Number of Hate Crime Incidents",
       title = "5 Counties in NY with Highest Incidents of Hate Crimes",
       subtitle = "Between 2010-2016", 
       fill = "Hate Crime Type",
      caption = "Source: NY State Division of Criminal Justice Services")
plot4

How would calculations be affected by looking at hate crimes in counties per year by population densities?

setwd("/Users/nnokigbo/Downloads")
nypop <- read_csv("newyorkpopulation.csv")
## Rows: 62 Columns: 8
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): Geography
## dbl (7): 2010, 2011, 2012, 2013, 2014, 2015, 2016
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

Clean the county name to match the other dataset

nypop$Geography <- gsub(" , New York", "", nypop$Geography)
nypop$Geography <- gsub("County", "", nypop$Geography)
nypoplong <- nypop |>
  rename(county = Geography) |>
  gather("year", "population", 2:8) 
nypoplong$year <- as.double(nypoplong$year)
head(nypoplong)
## # A tibble: 6 × 3
##   county                  year population
##   <chr>                  <dbl>      <dbl>
## 1 Albany , New York       2010     304078
## 2 Allegany , New York     2010      48949
## 3 Bronx , New York        2010    1388240
## 4 Broome , New York       2010     200469
## 5 Cattaraugus , New York  2010      80249
## 6 Cayuga , New York       2010      79844

Focus on 2012

nypoplong12 <- nypoplong |>
  filter(year == 2012) |>
  arrange(desc(population)) |>
  head(10)
nypoplong12$county<-gsub(" , New York","",nypoplong12$county)
nypoplong12
## # A tibble: 10 × 3
##    county       year population
##    <chr>       <dbl>      <dbl>
##  1 Kings        2012    2572282
##  2 Queens       2012    2278024
##  3 New York     2012    1625121
##  4 Suffolk      2012    1499382
##  5 Bronx        2012    1414774
##  6 Nassau       2012    1350748
##  7 Westchester  2012     961073
##  8 Erie         2012     920792
##  9 Monroe       2012     748947
## 10 Richmond     2012     470978

4/5 of the counties with the highest population were also listed in the counties with the highest hate crime rates/

Recall the total hate crime counts:

Kings 713 New York 459 Suffolk 360 Nassau 298 Queens 235

Filter hate crimes for 2012 as well

counties12 <- counties |>
  filter(year == 2012) |>
  arrange(desc(sum)) 
counties12
## # A tibble: 41 × 3
## # Groups:   year [1]
##     year county        sum
##    <dbl> <chr>       <dbl>
##  1  2012 Kings         136
##  2  2012 Suffolk        83
##  3  2012 New York       71
##  4  2012 Nassau         48
##  5  2012 Queens         48
##  6  2012 Erie           28
##  7  2012 Bronx          23
##  8  2012 Richmond       18
##  9  2012 Multiple       14
## 10  2012 Westchester    13
## # ℹ 31 more rows

Join the Hate Crimes data with NY population data for 2012

datajoin <- counties12 |>
  full_join(nypoplong12, by=c("county", "year"))
datajoin
## # A tibble: 41 × 4
## # Groups:   year [1]
##     year county        sum population
##    <dbl> <chr>       <dbl>      <dbl>
##  1  2012 Kings         136    2572282
##  2  2012 Suffolk        83    1499382
##  3  2012 New York       71    1625121
##  4  2012 Nassau         48    1350748
##  5  2012 Queens         48    2278024
##  6  2012 Erie           28     920792
##  7  2012 Bronx          23    1414774
##  8  2012 Richmond       18     470978
##  9  2012 Multiple       14         NA
## 10  2012 Westchester    13     961073
## # ℹ 31 more rows

Calculate the rate of incidents per 100,000. Then arrange in descending order

datajoinrate <- datajoin |>
  mutate(rate = sum/population*100000) |>
  arrange(desc(rate))
datajoinrate
## # A tibble: 41 × 5
## # Groups:   year [1]
##     year county        sum population  rate
##    <dbl> <chr>       <dbl>      <dbl> <dbl>
##  1  2012 Suffolk        83    1499382 5.54 
##  2  2012 Kings         136    2572282 5.29 
##  3  2012 New York       71    1625121 4.37 
##  4  2012 Richmond       18     470978 3.82 
##  5  2012 Nassau         48    1350748 3.55 
##  6  2012 Erie           28     920792 3.04 
##  7  2012 Queens         48    2278024 2.11 
##  8  2012 Bronx          23    1414774 1.63 
##  9  2012 Westchester    13     961073 1.35 
## 10  2012 Monroe          5     748947 0.668
## # ℹ 31 more rows

Notice that the highest rates of hate crimes in 2012 happened in:

dt <- datajoinrate[,c("county","rate")]
dt
## # A tibble: 41 × 2
##    county       rate
##    <chr>       <dbl>
##  1 Suffolk     5.54 
##  2 Kings       5.29 
##  3 New York    4.37 
##  4 Richmond    3.82 
##  5 Nassau      3.55 
##  6 Erie        3.04 
##  7 Queens      2.11 
##  8 Bronx       1.63 
##  9 Westchester 1.35 
## 10 Monroe      0.668
## # ℹ 31 more rows

But the highest populated counties were: Kings (Brooklyn), Queens, New York, Suffolk (Long Island), Bronx, and Nassau. They do not correspond directly, though they are similar, to the counties with highest rates of hate crimes.

Follow up

Aggregating some of the categories

aggregategroups <- hatecrimes |>
  pivot_longer(
    cols = 4:44,
    names_to = "victim_cat",
    values_to = "crimecount"
  )
unique(aggregategroups$victim_cat)
##  [1] "anti-male"                               
##  [2] "anti-female"                             
##  [3] "anti-transgender"                        
##  [4] "anti-genderidentityexpression"           
##  [5] "anti-age*"                               
##  [6] "anti-white"                              
##  [7] "anti-black"                              
##  [8] "anti-americanindian/alaskannative"       
##  [9] "anti-asian"                              
## [10] "anti-nativehawaiian/pacificislander"     
## [11] "anti-multi-racialgroups"                 
## [12] "anti-otherrace"                          
## [13] "anti-jewish"                             
## [14] "anti-catholic"                           
## [15] "anti-protestant"                         
## [16] "anti-islamic(muslim)"                    
## [17] "anti-multi-religiousgroups"              
## [18] "anti-atheism/agnosticism"                
## [19] "anti-religiouspracticegenerally"         
## [20] "anti-otherreligion"                      
## [21] "anti-buddhist"                           
## [22] "anti-easternorthodox(greek,russian,etc.)"
## [23] "anti-hindu"                              
## [24] "anti-jehovahswitness"                    
## [25] "anti-mormon"                             
## [26] "anti-otherchristian"                     
## [27] "anti-sikh"                               
## [28] "anti-hispanic"                           
## [29] "anti-arab"                               
## [30] "anti-otherethnicity/nationalorigin"      
## [31] "anti-non-hispanic*"                      
## [32] "anti-gaymale"                            
## [33] "anti-gayfemale"                          
## [34] "anti-gay(maleandfemale)"                 
## [35] "anti-heterosexual"                       
## [36] "anti-bisexual"                           
## [37] "anti-physicaldisability"                 
## [38] "anti-mentaldisability"                   
## [39] "totalincidents"                          
## [40] "totalvictims"                            
## [41] "totaloffenders"
aggregategroups <- aggregategroups |>
  mutate(group = case_when(
    victim_cat %in% c("anti-transgender", "anti-gayfemale", "anti-gendervictim_catendityexpression", "anti-gaymale", "anti-gay(maleandfemale", "anti-bisexual") ~ "anti-lgbtq",
    victim_cat %in% c("anti-multi-racialgroups", "anti-jewish", "anti-protestant", "anti-multi-religousgroups", "anti-religiouspracticegenerally", "anti-buddhist", "anti-hindu", "anti-mormon", "anti-sikh", "anti-catholic", "anti-islamic(muslim)", "anti-atheism/agnosticism", "anti-otherreligion", "anti-easternorthodox(greek,russian,etc.)", "anti-jehovahswitness", "anti-otherchristian") ~ "anti-religion", 
    victim_cat %in% c("anti-asian", "anti-arab", "anti-non-hispanic", "anti-white", "anti-americanindian/alaskannative", "anti-nativehawaiian/pacificislander", "anti-otherrace", "anti-hispanic", "anti-otherethnicity/nationalorigin") ~ "anti-ethnicity",
    victim_cat %in% c("anti-physicaldisability", "anti-mentaldisability") ~ "anti-disability",
    victim_cat %in% c("anti-female", "anti-male") ~ "anti-gender",
    TRUE ~ "others"))
aggregategroups
## # A tibble: 17,343 × 6
##    county  year crimetype              victim_cat               crimecount group
##    <chr>  <dbl> <chr>                  <chr>                         <dbl> <chr>
##  1 Albany  2016 Crimes Against Persons anti-male                         0 anti…
##  2 Albany  2016 Crimes Against Persons anti-female                       0 anti…
##  3 Albany  2016 Crimes Against Persons anti-transgender                  0 anti…
##  4 Albany  2016 Crimes Against Persons anti-genderidentityexpr…          0 othe…
##  5 Albany  2016 Crimes Against Persons anti-age*                         0 othe…
##  6 Albany  2016 Crimes Against Persons anti-white                        0 anti…
##  7 Albany  2016 Crimes Against Persons anti-black                        1 othe…
##  8 Albany  2016 Crimes Against Persons anti-americanindian/ala…          0 anti…
##  9 Albany  2016 Crimes Against Persons anti-asian                        0 anti…
## 10 Albany  2016 Crimes Against Persons anti-nativehawaiian/pac…          0 anti…
## # ℹ 17,333 more rows

or create a subset with just lgbtq

lgbtq <- hatecrimes |>
  pivot_longer(
      cols = 4:44,
      names_to = "victim_cat",
      values_to = "crimecount") |>
filter(victim_cat %in% c("anti-transgender", "anti-gayfemale", "anti-gendervictim_catendityexpression", "anti-gaymale", "anti-gay(maleandfemale", "anti-bisexual"))
lgbtq
## # A tibble: 1,692 × 5
##    county    year crimetype              victim_cat       crimecount
##    <chr>    <dbl> <chr>                  <chr>                 <dbl>
##  1 Albany    2016 Crimes Against Persons anti-transgender          0
##  2 Albany    2016 Crimes Against Persons anti-gaymale              1
##  3 Albany    2016 Crimes Against Persons anti-gayfemale            0
##  4 Albany    2016 Crimes Against Persons anti-bisexual             0
##  5 Albany    2016 Property Crimes        anti-transgender          0
##  6 Albany    2016 Property Crimes        anti-gaymale              0
##  7 Albany    2016 Property Crimes        anti-gayfemale            0
##  8 Albany    2016 Property Crimes        anti-bisexual             0
##  9 Allegany  2016 Property Crimes        anti-transgender          0
## 10 Allegany  2016 Property Crimes        anti-gaymale              0
## # ℹ 1,682 more rows

So what does all this mean?

Important Findings:

  1. I wonder what the data would look like if there was a universally accepted requirement for this type of data collection.

  2. The Bronx appears to have much lower than expected incvictim_catents of hate crimes relative to its population density in comparison to other NY counties.

  3. In Kings County, NY (which is home to Brooklyn; according to Wikipedia, it is New York’s most populous borough and the second most densly populated county in the US) in 2012, there was a spike in hate crimes against jews.

  4. All of these findings are corroborated in Hate Crime in New York State 2012 Annual Report: https://www.criminaljustice.ny.gov/crimnet/ojsa/hate-crime-in-nys-2012-annual-report.pdf

Essay Questions

  1. Write about the positive and negative aspects of this hate crimes data set. One positive aspect about the original hate crimes data set is how it lists the crime type. Although we did not need the crime type for our data analysis, it is still good to know especially if we are comparing it to the area we are observing. Another positive aspect about the original hate crimes data set is how it divides the hate crime victims into multiple different sections. This is good because everyone can be represented whether they are a minority or not. Although the diversity in the hate crimes is a positive aspect, it can also be seen as negative as there were several ‘0’ values that made the original data set difficult to view and extract important information without cleaning. Another negative aspect was the lack of range in years. I understand that kind of information can be hard to get but it would’ve been helpful if we can see how hatecrimes have increased or decreased in a span of 10 or 15 years.

  2. List 2 different paths you would like to (hypothetically) study about this dataset. One path I would like to hypothetically study about this data set is the rate of hate crimes against a religion compared to the dominant religion in the area. Also it would be interesting to disect which hate crimes were most prevalent at a certain time and what was happening in the world at the time.

  3. Describe 2 things you would do to follow up after seeing the output from the hatecrimes tutorial. One thing I would do to follow up after seeing the output from this hatecrimes tutorial is see if similar cities and counties have similar hate crime rates. Another follow up I would do is see if politics played a role in the rate of different hate crimes at a given time.