Домой приду, пришлю несколько вариантов разной степени идиотичности про задачку с таймфреймом. Но это, в общем-то несложная задачка. Вот представьте себе, что надо вычислить что-то типа количества людей, с которыми происходило событие tg1 с паузой не больше 3 дней. :-)
Я предпочитаю по ходу работы создавать дополнительные переменные в данных, так как с ними проще ориентироваться. По сути ровно то же самое: test[,inside:=ts %between% c('2017-09-01', '2017-09-15')] test[inside & event=="tg1",.N,by=group_id]
Ну в общем-то вот то, как я с данными в data.table работаю стилистически ближе к sql-запросу. А ведь есть ещё пакет sqldf, где олдскульные кудесники Oracle могут почуствовать себя уютно. Но я не пробовал, я в SQL со словарём.