r - 使用 data.table 查找重叠间隔组

标签 r data.table

我有多个间隔,需要找到哪些会形成一个连续的组。

在这个 MWE 中,我有 Interval.id、Interval.start 和 Interval.end。我想计算 Wanted.column。

DT <- data.table(Interval.id=c(1L, 2L, 3L, 4L, 5L, 6L),
                 Interval.start=c(2.0, 3.0, 4.0, 4.6, 4.7, 5.5),
                 Interval.end=c(4.5, 3.5, 4.8, 5.0, 4.9, 8.0),
                 Wanted.column=c(1L, 1L, 1L, 1L, 1L, 2L))

我想 foverlaps是这里的 friend ,但我不知道怎么做。

如何计算 Wanted.column?

最佳答案

DT[ , g := cumsum(
  cummax(shift(Interval.end, fill = Interval.end[1])) < Interval.start) + 1]

#    Interval.id Interval.start Interval.end Wanted.column   g
# 1:           1            2.0          4.5             1   1
# 2:           2            3.0          3.5             1   1
# 3:           3            4.0          4.8             1   1
# 4:           4            4.6          5.0             1   1
# 5:           5            4.7          4.9             1   1
# 6:           6            5.5          8.0             2   2

归功于高度相关的答案:
Collapse rows with overlapping ranges , How to flatten / merge overlapping time periods

关于r - 使用 data.table 查找重叠间隔组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58152986/

相关文章:

r - 将 Data.Tables (R) 与循环或 mapply 组合

r - 根据 R 中 bin 值的第二个向量替换值向量的有效方法

r - 为 Sweave 代码块设置默认参数

r - 一起使用 data.table 和 tidy eval : why group by does not work as expected, 为什么插入 ~ ?

r - 使用 data.table 包或其他解决方案对数据帧进行子集化和重组 [R]

r - 在r data.table中使用条件语句

r - 在 r 中创建二元运算符

css - Shiny - 更改文本(框)的大小、颜色和字体

r - 面板数据中的国家/年份表

r - 添加 geom_rect 时对象消失