Вы можете использовать пакет sqldf
для объединения двух таблиц, я назову их tb1
и tbl2
. Я предполагаю, что под «в пределах диапазона» вы подразумеваете, что интервал [t1, t2] является подмножеством интервала [t2_1, t2_2].
library(sqldf)
sqldf('
select *
from tbl1
join tbl2
on t1 >= t2_1
and t2 <= t2_2
')
# t1 t2 label1 t2_1 t2_2 label2
# 1 0.09657247 0.1452063 j 0.09657247 0.2159882 ja:
# 2 0.14520627 0.2159882 a: 0.09657247 0.2159882 ja:
# 3 0.21598818 0.2948941 c 0.21598818 0.3521566 ci
# 4 0.29489410 0.3521566 i 0.21598818 0.3521566 ci
Вы также можете использовать data.table
(те же результаты, что и выше)
data.table
вариант 1:
library(data.table)
setDT(tbl1)
setDT(tbl2)
tbl1[tbl2, on = .(t1 >= t2_1, t2 <= t2_2)
, .(t1, t2, label1, t2_1, t2_2, label2)]
data.table
вариант 2
setkey(tbl1, t1, t2)
setkey(tbl2, t2_1, t2_2)
foverlaps(tbl1, tbl2, type = 'within')[, .(t1, t2, label1, t2_1, t2_2, label2)]