【发布时间】:2020-10-20 18:33:43
【问题描述】:
我试图了解我的数据集是否相互重叠(或相交)。让我用下面的例子来解释df1 and df2,start 列的意思是,行的间隔从那个点开始,stop 表示间隔在那个点结束。我试图了解每一行是否相交,如果有人不相交,则输出将为 FALSE。因此,R 中有“重叠”(来自DescTools 包)函数,但它不支持检查多个重叠区域。您可以看到df1 数据集,其中所有行都相互交叉,另一方面,df2 不符合此规则,因为第 5 行与第 2 行或第 4 行不相交,我的预期输出为 TRUE假,例如; df1 的输出为 TRUE,df2 的输出为 FALSE。谢谢。
df1<-data.frame(start=c(100,90,130,110), stop=c(200,140,270,150))
df2<-data.frame(start=c(100,90,130,110, 170), stop=c(200,140,270,150,190))
编辑1:
library(DescTools)
(1,3) %overlaps% (2,5),我尝试对我的数据集的每一行都这样做,我的意思是每一行与%overlaps% 的其他行相比。
edit2:我的解决方案是:对于 df1
x<-combinations(nrow(df1),2)
TF <- NULL
for (ill in 1:nrow(x)) {TF[ill]<- df[x[ill,1],] %overlaps% df[x[ill,2],] }
T<-all(TF)
【问题讨论】:
-
也许你想要
all(head(df1$stop, -1) >= tail(df1$start, -1))这样的东西? -
谢谢@Axeman 你为什么用-1?
标签: r overlapping