foverlaps() should be easier to do point-to-interval join

Open
#3,721 0 comments 7 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
45/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
r

Research direction

Start with the foverlaps entry point and documentation, then run the supplied x and y example using the requested by.x values. Done means the direct point-to-interval call works without adding the dummy end column and provides the intended join result.

Written by the indexing model from the issue text.

Description

non-equi joins top request

From SE: https://codereview.stackexchange.com/questions/224705
via Twitter: https://twitter.com/Voovarb/status/1153432914878537729

ppc = 'Pacific/Pitcairn'
x <- data.table(
  TagID = c(20161L, 23055L, 45428L, 2627L),
  DateTimePST = .POSIXct(c(1415481096, 1380768444, 1474560076, 1511384035), ppc),
  Receiver = c(102140L, 112568L, 112568L, 121907L)
)

y <- data.table(
  Station = c("YBAAG4", "YBAAG4", "YBCSSW", "YBCSSW", "YBBCD", "YBAWW"),
  Receiver = c(102140L, 102140L, 112568L, 112568L, 121907L, 121907L),
  Start = .POSIXct(c(1464979020, 1409256300, 1369945920, 1470761034, 1505494980, 1409246700), ppc)),
  End = .POSIXct(c(1473357300, 1421878500, 1382638020, 1479838293, 1513282440, 1421871360), ppc),
  key=c('Receiver', 'Start', 'End')
)

The intent of the following seems pretty clear:

foverlaps(x, y, by.x = c('Receiver', 'DateTimePST', 'DateTimePST'), type = 'within')

But for now we have to resort to defining a dummy column:

x [ , end := DateTimePST]
foverlaps(x, y, by.x = c('Receiver', 'DateTimePST', 'end'), type = 'within')
Dominant language
R
Stars
3.9k
Forks
1.1k
Avg merge
14h 4m
Merged PRs (30d)
4

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Rdatatable/data.table

All issues in Rdatatable/data.table

Similar issues

More R issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.