Skip to content
R package for accessing data from the Crime Open Database
R Rebol
Branch: master
Clone or download
Matt Ashby
Latest commit ed5278c Mar 21, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
data Download RDS data, add block_geoid_to() Oct 11, 2018
man Prepare for v0.2.0 release Mar 21, 2019
tests Add support for SF objects Nov 7, 2018
vignettes Add introduction vignette Mar 21, 2019
.Rbuildignore Add support for SF objects Nov 7, 2018
.gitignore Add support for SF objects Nov 7, 2018
.travis.yml Fix Travis udunits2 bug Nov 8, 2018
DESCRIPTION Prepare for v0.2.0 release Mar 21, 2019
LICENSE Make LICENSE file CRAN compatible Oct 3, 2018
NAMESPACE Add support for SF objects Nov 7, 2018 Add introduction vignette Mar 21, 2019 Add introduction vignette Mar 21, 2019
codecov.yml Add code coverage checks Oct 12, 2018 Prepare for v0.2.0 release Mar 21, 2019
crimedata.Rproj Initial commit Oct 2, 2018


The goal of crimedata is to access police-recorded crime data from large US cities using the Crime Open Database (CODE), a service that provides these data in a convenient format for analysis. All the data are available to use for free as long as you acknowledge the source of the data.

The function get_crime_data() returns a tidy data tibble or simple features (SF) object of crime data with each row representing a single crime. The data provided for each offense includes the offense type, approximate offense location and date/time. More fields are available for some records, depending on what data have been released by each city. For most cities, data are available from 2010 onwards, with some available back to 2007. Use list_crime_data() to see which years are available for which cities.

More detail about what data are available, how they were constructed and the meanings of the different categories can be found on the CODE project website. Further detail is available in a pre-print data paper.


You can install crimedata with:


You can install the latest development version of crimedata from github with:

# install.packages("devtools")


Data can be downloaded by year and by city. By default (i.e. if no arguments are specified) a 1% sample of data for all cities for the most recent available year is returned.


crime_data <- get_crime_data()

The data are in a tidy format, so can be quickly manipulated using dplyr verbs. For example, to analyse two years of personal robberies in Chicago and Detroit, you can run:


personal_robberies <- get_crime_data(
  years = 2009:2010, 
  cities = c("Chicago", "Detroit"), 
  type = "core"
) %>% 
  filter(offense_type == "personal robbery")

You can alternatively get a simple features (SF) point object with the correct co-ordinates and co-ordinate reference system (CRS) specified by setting the argument output = "sf". This can be used, for example, to quickly plot the data.


  cities = "Fort Worth", 
  years = 2014:2017, 
  type = "core",
  output = "sf"
) %>% 
  filter(offense_group == "homicide offenses") %>% 
  mutate(offense_year = year(date_single)) %>% 
  ggplot() + 
  geom_sf() +

Included data

The package includes two datasets. homicides15 contains records of 1,922 recorded homicides in nine US cities in 2015. nycvehiclethefts contains records of 35,746 thefts of motor vehicles in New York City from 2014 to 2017. These may be particularly useful for teaching purposes.

You can’t perform that action at this time.