写
在前面
本期大猫课堂将继续上期的R Tricks系列。在这一期中,大猫将向大家介绍“Gaps & Islands Problem”。这是在处理时间序列或者基因组数据中常见的一项任务。...假如我们有如下数据集:
?
这是一个记录时间的数据集。每一行都有ID、起始时间(stime)、结束时间(etime)。...”
我们的思路很简单,分成四步:
▶ 将数据集按照ID与起始时间(stime)进行排序
▶ 找到结束时间(etime)的累计最大值
▶ 一旦完成以上两步,那么重叠的行即为当前结束时间(etime)累计最大值仍旧大于下一行的观测...解
题步骤
首先,我们将原数据集按照ID以及起始时间(stime)排序:
▶ setorder(dat, ID, stime)
其次,也是最关键的一步,我们需要建立一个新变量etime.max。...附:样例数据集生成代码
▶ dat <- structure(
list(ID = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L),