GitXplorerGitXplorer
n

ukpolice

public
36 stars
9 forks
11 issues

Commits

List of commits on branch master.
Verified
e2d2705bead920c8fa1d16f5a795269456da89bc

Merge pull request #25 from njtierney/stop-and-search

nnjtierney committed 6 years ago
Unverified
22cc4b2180ee26eee6595b2baadb34bfa1e322ef

* gains `ukp_stop_search()` and `ukp_stop_seach_poly()` (#22 & #23) to return

nnjtierney committed 6 years ago
Unverified
bd967054b85645c28a220a78716aaf62b6c346cd

minor touch up of docs

nnjtierney committed 6 years ago
Unverified
8b3e05b43c62a4a90238526eb969d4d4e22e0e46

Adds `lat_` and `lng_` example data so people can explore crime in a few places like "London", "Cambridge University", "Oxford University", "Abby Road Recording Studio", and "Liverpool city".

nnjtierney committed 6 years ago
Unverified
2219594a269b4f8edb50df9ca44b64451626c7c6

fixes misc spelling mistakes

nnjtierney committed 6 years ago
Unverified
c87858caf71137556f7b22aeee74290cc51d2c6c

usethis::use_spell_check

nnjtierney committed 6 years ago

README

The README file for this repository.

ukpolice

AppVeyor Build StatusTravis-CI Build StatusCoverage Status lifecycle

ukpolice is an R package that facilitates retrieving data from the UK police database.. The data provided by the API contains public sector information licensed under the Open Government Licence v3.0.

Installation

Install from GitHub

#install.packages("remotes")
remotes::install_github("njtierney/ukpolice")

Get the crime data with ukp_crime

ukp_crime() draws crimes from within a one mile radius of the location. When no date is specified, it uses the latest month available, which can be found using ukp_last_update().

library(ukpolice)

crime_data <- ukp_crime(lat = 52.629729, lng = -1.131592)
#> No encoding supplied: defaulting to UTF-8.

head(crime_data)
#> # A tibble: 6 x 12
#>   category persistent_id date    lat  long street_id street_name context
#>   <chr>    <chr>         <chr> <dbl> <dbl> <chr>     <chr>       <chr>  
#> 1 anti-so… ""            2018…  52.6 -1.13 883389    On or near… ""     
#> 2 anti-so… ""            2018…  52.6 -1.13 883356    On or near… ""     
#> 3 anti-so… ""            2018…  52.6 -1.14 883430    On or near… ""     
#> 4 anti-so… ""            2018…  52.6 -1.13 883378    On or near… ""     
#> 5 anti-so… ""            2018…  52.6 -1.12 883201    On or near… ""     
#> 6 anti-so… ""            2018…  52.6 -1.14 883426    On or near… ""     
#> # … with 4 more variables: id <chr>, location_type <chr>,
#> #   location_subtype <chr>, outcome_status <chr>

ukp_last_update()
#> No encoding supplied: defaulting to UTF-8.
#> [1] "2018-11"

Specify a month and year for data

When date is specified, it must be in the format “YYYY-MM”. Currently ukp_crime() only allows for searching of that current month.

crime_data_date <- ukp_crime(lat = 52.629729, 
                             lng = -1.131592,
                             date = "2016-03")
#> No encoding supplied: defaulting to UTF-8.

head(crime_data_date)
#> # A tibble: 6 x 12
#>   category persistent_id date    lat  long street_id street_name context
#>   <chr>    <chr>         <chr> <dbl> <dbl> <chr>     <chr>       <chr>  
#> 1 anti-so… ""            2016…  52.6 -1.13 883288    On or near… ""     
#> 2 anti-so… ""            2016…  52.6 -1.13 883321    On or near… ""     
#> 3 anti-so… ""            2016…  52.6 -1.13 883362    On or near… ""     
#> 4 anti-so… ""            2016…  52.6 -1.13 883388    On or near… ""     
#> 5 anti-so… ""            2016…  52.6 -1.13 883359    On or near… ""     
#> 6 anti-so… ""            2016…  52.6 -1.11 883060    On or near… ""     
#> # … with 4 more variables: id <chr>, location_type <chr>,
#> #   location_subtype <chr>, outcome_status <chr>

This is still a little buggy at the moment as it returns blank columns for variables like persistent_id and context, location_subtype, and outcome_status. This issue is currently logged at issue #11.

Example usage

Explore the number of crime types

library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
library(ggplot2)

crime_data <- ukp_crime(lat = 52.629729, lng = -1.131592)
#> No encoding supplied: defaulting to UTF-8.

crime_data %>%
  count(category) %>%
  ggplot(aes(x = reorder(category, n),
             y = n)) + 
  geom_col() + 
  labs(x = "Crime Type",
       y = "Number of Crimes",
       title = paste0("Crimes commited in ",crime_data$date[1])) +
  coord_flip() +
  theme_minimal()

Using leaflet

You can add a popup that displays the crime type using the popup argument in leaflet.

library(leaflet)
crime_data <- ukp_crime(lat = 52.629729, lng = -1.131592)
#> No encoding supplied: defaulting to UTF-8.
crime_data %>%
  leaflet() %>%
  addTiles() %>%
  addCircleMarkers(popup = ~category)
#> Assuming "long" and "lat" are longitude and latitude, respectively

Other use of ukpolice

ukpolice does other things! At the moment other features include:

  • Get crime within a polygon with ukp_crime_poly()
  • Retrieve a list of neighbourhoods for a police force with ukp_neighbourhood()

To see these examples, read the vignette “Getting Started with ukpolice”.

Code of Conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Thanks

hex sticker police logo “Police” created by Yu luck from the Noun Project, hex sticker made with hexSticker package