spatsoc is an R package for detecting spatial and temporal groups in GPS relocations. It can be used to convert GPS relocations to gambit-of-the-group format to build proximity-based social networks with grouping and edge-list generating functions. In addition, the randomizations function provides data-stream randomization methods suitable for GPS data and the get_gbi function generates group by individual matrices useful for building networks with asnipe::get_network.

See below for installation and basic usage.

For more details, see the blog post and vignettes:


New edge-list generating functions added (feedback welcome as always!):

  • edge_nn
  • edge_dist


Install the latest version with remotes.


# or CRAN

spatsoc depends on rgeos and requires GEOS installed on the system.

  • Debian/Ubuntu: apt-get install libgeos-dev
  • Arch: pacman -S geos
  • Fedora: dnf install geos geos-devel
  • Mac: brew install geos
  • Windows: see here


Import package, read data

spatsoc expects a data.table for all of its functions. If you have a data.frame, you can use data.table::setDT() to convert it by reference. If your data is a text file (e.g.: CSV), you can use data.table::fread() to import it as a data.table.

DT <- fread(system.file("extdata", "DT.csv", package = "spatsoc"))
DT[, datetime := as.POSIXct(datetime, tz = 'UTC')]


spatsoc provides:

one temporal grouping function,

  • group_times

three spatial grouping functions,

  • group_pts
  • group_lines
  • group_polys

two edge-list generating functions,

  • edge_nn
  • edge_dist

and two social network analysis functions.

  • randomizations
  • get_gbi


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.

Development of spatsoc welcomes contribution of feature requests, bug reports and suggested improvements through the issue board.

See details in