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
是这里的朋友,但我不知道怎么做。
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
归功于高度相关的答案: 折叠具有重叠范围的行,如何展平/合并重叠时间段
推荐阅读
- python - 美丽的汤附加
- scala - 测试使用scalatest编译失败
- c - 最小化代码并获得相同的输出
- tfs - 使用凭据在共享网络路径上发布 TFS
- c - C中的便携式常数时间整数log2
- prometheus - Prometheus Cloudwatch Exporter 没有为 AWS ELB 返回正确的矩阵
- android - 如何检查 android 设备是否运行 10.2 或更高版本的 google play 服务
- svg - 如何使 svg 大小适合其内容?
- firebase - FCM 通知在 OREO 中不起作用
- vb.net - 如何禁用/抑制特定行的 Resharper 代码分析(Roslyn)?