Generate a dyad ID for edge list generated by edge_nn or edge_dist.

dyad_id(DT = NULL, id1 = NULL, id2 = NULL)

Arguments

DT

input data.table with columns id1 and id2, as generated by edge_dist or edge_nn

id1

ID1 column name generated by edge_dist or edge_nn

id2

ID2 column name generated by edge_dist or edge_nn

Value

dyad_id returns the input data.table with appended "dyadID" column

Details

An undirected edge identifier between, for example individuals A and B will be A-B (and reverse B and A will be A-B). Internally sorts and pastes id columns.

More details in the edge and dyad vignette (in progress).

Examples

# Load data.table
library(data.table)

# Read example data
DT <- fread(system.file("extdata", "DT.csv", package = "spatsoc"))

# Cast the character column to POSIXct
DT[, datetime := as.POSIXct(datetime, tz = 'UTC')]
#>        ID        X       Y            datetime population
#>     1:  A 715851.4 5505340 2016-11-01 00:00:54          1
#>     2:  A 715822.8 5505289 2016-11-01 02:01:22          1
#>     3:  A 715872.9 5505252 2016-11-01 04:01:24          1
#>     4:  A 715820.5 5505231 2016-11-01 06:01:05          1
#>     5:  A 715830.6 5505227 2016-11-01 08:01:11          1
#>    ---                                                   
#> 14293:  J 700616.5 5509069 2017-02-28 14:00:54          1
#> 14294:  J 700622.6 5509065 2017-02-28 16:00:11          1
#> 14295:  J 700657.5 5509277 2017-02-28 18:00:55          1
#> 14296:  J 700610.3 5509269 2017-02-28 20:00:48          1
#> 14297:  J 700744.0 5508782 2017-02-28 22:00:39          1

# Temporal grouping
group_times(DT, datetime = 'datetime', threshold = '20 minutes')
#>        ID        X       Y            datetime population minutes timegroup
#>     1:  A 715851.4 5505340 2016-11-01 00:00:54          1       0         1
#>     2:  A 715822.8 5505289 2016-11-01 02:01:22          1       0         2
#>     3:  A 715872.9 5505252 2016-11-01 04:01:24          1       0         3
#>     4:  A 715820.5 5505231 2016-11-01 06:01:05          1       0         4
#>     5:  A 715830.6 5505227 2016-11-01 08:01:11          1       0         5
#>    ---                                                                     
#> 14293:  J 700616.5 5509069 2017-02-28 14:00:54          1       0      1393
#> 14294:  J 700622.6 5509065 2017-02-28 16:00:11          1       0      1394
#> 14295:  J 700657.5 5509277 2017-02-28 18:00:55          1       0      1440
#> 14296:  J 700610.3 5509269 2017-02-28 20:00:48          1       0      1395
#> 14297:  J 700744.0 5508782 2017-02-28 22:00:39          1       0      1396

# Edge list generation
edges <- edge_dist(
    DT,
    threshold = 100,
    id = 'ID',
    coords = c('X', 'Y'),
    timegroup = 'timegroup',
    returnDist = TRUE,
    fillNA = TRUE
  )

# Generate dyad IDs
dyad_id(edges, 'ID1', 'ID2')
#>        timegroup ID1  ID2  distance dyadID
#>     1:         1   A <NA>        NA   <NA>
#>     2:         1   B    G  5.782904    B-G
#>     3:         1   C <NA>        NA   <NA>
#>     4:         1   D <NA>        NA   <NA>
#>     5:         1   E    H 65.061671    E-H
#>    ---                                    
#> 22985:      1440   G <NA>        NA   <NA>
#> 22986:      1440   H <NA>        NA   <NA>
#> 22987:      1440   I    C  2.831071    C-I
#> 22988:      1440   I    F  7.512922    F-I
#> 22989:      1440   J <NA>        NA   <NA>