找到重叠的间隔

时间:2016-06-10 17:57:38

标签: r dataframe overlap

我在数据框中有间隔,如下所示:

df=data.frame(Id=rep("A1",23),start=c(11176,11176,11176,11176,11176,11176,11176,11177,11177,11177,11177,11177,11177,11178,11178,11179,11179,11179,11233,11233,11233,11233,11233),end=c(11205,11206,11206,11206,11206,11206,11207,11206,11206,11208,11206,11208,11209,11206,11206,11203,11204,11204,11263,11263,11263,11263,11264)) 

此外,我的查询位置为" 11180"。现在我想从11180所属的区间开始重叠间隔。我的意思是我的查询位置(11180)位于df" 11176"的第一个间隔之间。和111205。因此,我采用此间隔(11176 and 111205)并查找重叠11176111205的间隔。稍后重叠11176 and 111205的重叠间隔的间隔等等,直到找不到重叠并返回该间隔。我希望我的代码能够将1117911204作为最后重叠的时间间隔,但不知何故它仅报告1117811206。以下是我的代码

    for(i in 1:dim(df)[1])
{
  final_start=temp_start
  final_end=temp_end
 if((findInterval(final_end,c(df$start[i],df$end[i]),rightmost.closed = T,left.open = T)==1L) || (findInterval(final_start,c(df$start[i],df$end[i]),rightmost.closed = T,left.open = T)==1L))
   {
    final_start=df$start[i]
    final_end=df$end[i]
    print(final_start)
    print(final_end)
   } 
}

上面的代码将查询范围作为输入,并将起始和结束存储在temp_start和temp_end中。稍后它会检查temp_end或temp_start是否在数据框df中的间隔范围内。任何指导对我都非常有用。提前致谢。如果您需要更多详细信息,请与我们联系。

0 个答案:

没有答案