── 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.5.0 ✔ tibble 3.2.1
✔ lubridate 1.9.3 ✔ tidyr 1.3.1
✔ 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
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.
(hatecrimes$crimetype)
Warning: Unknown or uninitialised column: `crimetype`.
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
#selecting only certain hatecrimeshatecrimes2 <- 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(hatecrimes2)
#plotplot2 <- 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
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
#group by countiescounties <- 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.
#top 5 counties w highest hate crimescounties2 <- 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
#barplot for highest countiesplot4 <- 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
Population Densities
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.
# 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
Essay
This dataset is very expansive when it comes to the types of people that are affected by hate crimes. It’s very inclusive and allows analysis for all types of marginalized groups. However, the dataset doesn’t specify what is considered a hate crime. The ‘crime type’ variable doesn’t provide much information either and only consists of “property crimes” and “crimes against persons”. It could be improved by splitting these two categories into more specific categories such as vandalism with hate symbols, murder, etc. Hate crime is very broad and can range from something as small as graffiti to lynching, so I believe it’s important this data is included in the dataset.
As for paths I’d like to study, I would explore hate crimes based on religion. I’d sort the dataset to see which religion experiences the most hate crimes and compare that information to the populations in New York. Another thing I would explore is if changes in law and/or law enforcement regarding hate crime might have affected the reported hate crimes between 2010 and 2016. Over six years, there definitely have been changes in policy, both federal and statewide. So, I’d want to see how hate crime rates may have changed at specific moments of time.
One thing I’d do to continue off the tutorial is do some grouping by religion, race, gender, etc., do a facet wrap to graph data from each subcategory (ex. anti-Muslim hate crimes within religion). Another thing I would do to follow up is learn more about the top three counties in New York that have the most hate crimes. Whether they’re suburban, rural, or urban areas, what demographics live there, how funded the county may be, and other variables that might contribute to their high hate crime rates.