按距离截止对线性间隔进行分组
Grouping linear intervals by distance cutoff
我有一个 R
data.frame
的线性间隔:
df <- data.frame(id = paste0("i",1:15),
start = c(6575,7156,7949,45835,46347,47168,126804,127276,128127,157597,158074,158902,199129,199704,200507),
end = c(6928,7392,8260,46104,46610,47485,127079,127542,128417,157872,158340,159219,199374,199951,200938))
我也有一个区间距离截止值:
inter.interval.distance.cutoff <- 3243
df
按 start
和 end
排序。第一个区间被标记为属于 group
g1
并且从那里开始任何被它之前的区间隔开一段距离的区间(定义为当前区间的 start
减去等于或小于 inter.interval.distance.cutoff
的 end
之前的间隔的 end
被分配给它之前的间隔的 group
,否则它开始一个新组( group
index 递增 1,这就是 ew 如何获得新的 group
标签)。
这是我想要的结果:
df$group <- c(rep("g1",3), rep("g2",3), rep("g3",3), rep("g4",3), rep("g5",3))
有什么快速的方法吗?
df$group <- paste0('g', cumsum(c(1, diff(df$start)>inter.interval.distance.cutoff)))
id start end f
1 i1 6575 6928 g1
2 i2 7156 7392 g1
3 i3 7949 8260 g1
4 i4 45835 46104 g2
5 i5 46347 46610 g2
6 i6 47168 47485 g2
7 i7 126804 127079 g3
8 i8 127276 127542 g3
9 i9 128127 128417 g3
10 i10 157597 157872 g4
11 i11 158074 158340 g4
12 i12 158902 159219 g4
13 i13 199129 199374 g5
14 i14 199704 199951 g5
15 i15 200507 200938 g5
我有一个 R
data.frame
的线性间隔:
df <- data.frame(id = paste0("i",1:15),
start = c(6575,7156,7949,45835,46347,47168,126804,127276,128127,157597,158074,158902,199129,199704,200507),
end = c(6928,7392,8260,46104,46610,47485,127079,127542,128417,157872,158340,159219,199374,199951,200938))
我也有一个区间距离截止值:
inter.interval.distance.cutoff <- 3243
df
按 start
和 end
排序。第一个区间被标记为属于 group
g1
并且从那里开始任何被它之前的区间隔开一段距离的区间(定义为当前区间的 start
减去等于或小于 inter.interval.distance.cutoff
的 end
之前的间隔的 end
被分配给它之前的间隔的 group
,否则它开始一个新组( group
index 递增 1,这就是 ew 如何获得新的 group
标签)。
这是我想要的结果:
df$group <- c(rep("g1",3), rep("g2",3), rep("g3",3), rep("g4",3), rep("g5",3))
有什么快速的方法吗?
df$group <- paste0('g', cumsum(c(1, diff(df$start)>inter.interval.distance.cutoff)))
id start end f
1 i1 6575 6928 g1
2 i2 7156 7392 g1
3 i3 7949 8260 g1
4 i4 45835 46104 g2
5 i5 46347 46610 g2
6 i6 47168 47485 g2
7 i7 126804 127079 g3
8 i8 127276 127542 g3
9 i9 128127 128417 g3
10 i10 157597 157872 g4
11 i11 158074 158340 g4
12 i12 158902 159219 g4
13 i13 199129 199374 g5
14 i14 199704 199951 g5
15 i15 200507 200938 g5