Loading in the libraries and setting the working directory
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ 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
library(tinytex)
setwd("/Users/aashkanavale/Desktop/Montgomery College/MC Spring '24/DATA110/data sets")
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 the data
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
I decided to look at the top 10 hate-crimes with the largest amount of maximum numbers.
hatecrimes2 <- hatecrimes |>
select(county, year, 'anti-jewish', 'anti-gaymale', 'anti-otherethnicity/nationalorigin', 'anti-black', 'anti-hispanic', 'anti-catholic', 'anti-white', 'anti-multi-religiousgroups') |>
group_by(county, year)
head(hatecrimes2)
## # A tibble: 6 × 10
## # Groups: county, year [4]
## county year `anti-jewish` `anti-gaymale` anti-otherethnicity/…¹ `anti-black`
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Albany 2016 0 1 0 1
## 2 Albany 2016 0 0 0 2
## 3 Allega… 2016 0 0 0 1
## 4 Bronx 2016 0 8 0 0
## 5 Bronx 2016 1 0 0 0
## 6 Broome 2016 0 1 0 1
## # ℹ abbreviated name: ¹`anti-otherethnicity/nationalorigin`
## # ℹ 4 more variables: `anti-hispanic` <dbl>, `anti-catholic` <dbl>,
## # `anti-white` <dbl>, `anti-multi-religiousgroups` <dbl>
Checking the dimensions and the summary to make sure there are no missing values
dim(hatecrimes2)
## [1] 423 10
# I currently have 10 variables with 423 rows.
summary(hatecrimes2)
## county year anti-jewish anti-gaymale
## Length:423 Min. :2010 Min. : 0.000 Min. : 0.000
## Class :character 1st Qu.:2011 1st Qu.: 0.000 1st Qu.: 0.000
## Mode :character Median :2013 Median : 0.000 Median : 0.000
## Mean :2013 Mean : 3.981 Mean : 1.499
## 3rd Qu.:2015 3rd Qu.: 3.000 3rd Qu.: 1.000
## Max. :2016 Max. :82.000 Max. :36.000
## anti-otherethnicity/nationalorigin anti-black anti-hispanic
## Min. : 0.0000 Min. : 0.000 Min. : 0.0000
## 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000
## Median : 0.0000 Median : 1.000 Median : 0.0000
## Mean : 0.2837 Mean : 1.761 Mean : 0.3735
## 3rd Qu.: 0.0000 3rd Qu.: 2.000 3rd Qu.: 0.0000
## Max. :19.0000 Max. :18.000 Max. :17.0000
## anti-catholic anti-white anti-multi-religiousgroups
## Min. : 0.0000 Min. : 0.0000 Min. : 0.00000
## 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.00000
## Median : 0.0000 Median : 0.0000 Median : 0.00000
## Mean : 0.2695 Mean : 0.3357 Mean : 0.07565
## 3rd Qu.: 0.0000 3rd Qu.: 0.0000 3rd Qu.: 0.00000
## Max. :12.0000 Max. :11.0000 Max. :10.00000
Converting from wide to long format
hatelong <- hatecrimes2 |>
pivot_longer(
cols = 3:10,
names_to = "victim_cat",
values_to = "crimecount"
)
hatelong
## # A tibble: 3,384 × 4
## # Groups: county, year [277]
## county year victim_cat crimecount
## <chr> <dbl> <chr> <dbl>
## 1 Albany 2016 anti-jewish 0
## 2 Albany 2016 anti-gaymale 1
## 3 Albany 2016 anti-otherethnicity/nationalorigin 0
## 4 Albany 2016 anti-black 1
## 5 Albany 2016 anti-hispanic 0
## 6 Albany 2016 anti-catholic 0
## 7 Albany 2016 anti-white 0
## 8 Albany 2016 anti-multi-religiousgroups 0
## 9 Albany 2016 anti-jewish 0
## 10 Albany 2016 anti-gaymale 0
## # ℹ 3,374 more rows
Using the long format to create a facet plot
hatecrimeplot <- hatelong |>
ggplot(aes(year, crimecount)) +
geom_point() +
aes(color = victim_cat) +
facet_wrap(~ victim_cat)
hatecrimeplot
Looking deeper into crimes I took the top 3 hate-crimes that looked significantly different than the rest.
hatenew <- hatelong |>
filter(victim_cat %in% c("anti-jewish", "anti-gaymale", "anti-black")) |>
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
Plotting these three hate-crimes together
hcplot2 <- 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",
x = "Year",
title = "Hate Crime Types in Counties in NY Between 2010-2016",
caption = "Source - NY State Division of Criminal Justice Services")
hcplot2
Plotting by county
hcplot3 <- 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",
x = "County",
title = "Hate Crime Types in Counties in NY Between 2010-2016",
caption = "Source - NY State Division of Criminal Justice Services")
hcplot3
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.
counties
## # A tibble: 277 × 3
## # Groups: year [7]
## 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
## 7 2011 Kings 86
## 8 2016 New York 86
## 9 2012 Suffolk 83
## 10 2013 New York 75
## # ℹ 267 more rows
Top 5 counties
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
hcplot4 <- 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",
x = "County",
title = "Hate Crime Types in Counties in NY Between 2010-2016",
caption = "Source - NY State Division of Criminal Justice Services")
hcplot4
How would calculations be affected by looking at hate-crimes in counties per year by population densities?
setwd("/Users/aashkanavale/Desktop/Montgomery College/MC Spring '24/DATA110/data sets")
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.
Cleaning the county names to match the previous data set
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
Focusing 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
Recalling the total hate-crime counts, Kings County held the most at 713, New York at 459, Suffolk at 360, Nassau at 298, and finally Queens at 235.
Filtering hate-crimes just for 2012
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
Joining 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
Calculating the rate of incidents per 100,000 then arranging 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
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
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
Creating subsets with just religion
religion <- hatecrimes |>
pivot_longer(
cols = 4:44,
names_to = "victim_cat",
values_to = "crimecount") |>
filter(victim_cat %in% c("anti-jewish", "anti-catholic", "anti-protestant", "anti-islamic(muslim)", "anti-multi-religiousgroups", "anti-atheism/agnosticism", "anti-religiouspracticegenerally", "anti-otherreligion", "anti-buddhist", "anti-easternorthodox(greek,russian,etc.", "anti-hindu", "anti-jehovahswitness", "anti-mormon", "anti-otherchristian", "anti-sikh"))
religion
## # A tibble: 5,922 × 5
## county year crimetype victim_cat crimecount
## <chr> <dbl> <chr> <chr> <dbl>
## 1 Albany 2016 Crimes Against Persons anti-jewish 0
## 2 Albany 2016 Crimes Against Persons anti-catholic 0
## 3 Albany 2016 Crimes Against Persons anti-protestant 0
## 4 Albany 2016 Crimes Against Persons anti-islamic(muslim) 1
## 5 Albany 2016 Crimes Against Persons anti-multi-religiousgroups 0
## 6 Albany 2016 Crimes Against Persons anti-atheism/agnosticism 0
## 7 Albany 2016 Crimes Against Persons anti-religiouspracticegeneral… 0
## 8 Albany 2016 Crimes Against Persons anti-otherreligion 0
## 9 Albany 2016 Crimes Against Persons anti-buddhist 0
## 10 Albany 2016 Crimes Against Persons anti-hindu 0
## # ℹ 5,912 more rows
One positive aspect of this data set is that it includes many different variables and goes into depth of each topic like LGBTQ, race, religion, gender, and even disabilities. However, one negative aspect is that the data set is about the times hate-crimes weren’t recorded. There could be so many more hate-crimes that we have zero clue about.
I would like to also study the race and LGBTQ aspects of this dataset and how the hate differs when compared to religion, like I did. I would say the most hate was aimed towards mostly religion and race but I’d like to study how it compares to the other variables in this dataset.
I would follow up with the government, possibly send a letter, to request to see the data of hate-crimes not recorded in ALL states. Bigger states like Texas and California would probably have equally as interesting results and data to study as New York’s. Being able to analyze the whole country’s gaps in where they are unable to record hate-crimes will give us an idea of how big of a problem this might be. Another thing I would do (and did) is look up why 2012 was the worst year for the Jewish community. According to CBS News New York, there were 248 anti-Semitic incidents in 2012.