R 将频带矩阵转换为帧并省略某些行?

R 将频带矩阵转换为帧并省略某些行?,r,dataframe,R,Dataframe,我以前得到了很多帮助,但我刚刚遇到了另一个问题,我想知道是否有人会有任何见解 在一篇文章中,我写道我有一个数据集(它实际上有大约50行),我们称之为“时间”: > Times <- read.csv(“Times.csv”, stringsAsFactors=FALSE, header=TRUE) > Times Num Start End 1 00:09:41 00:25:025 2 00:11:21 00:41:32 3

我以前得到了很多帮助,但我刚刚遇到了另一个问题,我想知道是否有人会有任何见解

在一篇文章中,我写道我有一个数据集(它实际上有大约50行),我们称之为“时间”:

> Times <- read.csv(“Times.csv”, stringsAsFactors=FALSE, header=TRUE)
> Times

Num     Start          End
1    00:09:41    00:25:025
2    00:11:21     00:41:32
3    00:34:39     00:58:01
>时代
Num开始结束
1    00:09:41    00:25:025
2    00:11:21     00:41:32
3    00:34:39     00:58:01
然后,为了找到重叠的时间间隔,有人建议我创建一个波段矩阵——比较所有行

Overlap <- outer (Times$Start, Times$End, function (x,y) y > x)
Overlap [upper.tri (Overlap) | col (Overlap) = = row(Overlap)] <- NA
Overlap

       [,1]   [,2]   [,3]           
[1,]     NA     NA     NA
[2,]   TRUE     NA     NA
[3,]  FALSE   TRUE     NA
重叠x)

重叠[upper.tri(Overlap)| col(Overlap)=行(Overlap)]以排除不与任何其他行重叠的行

Times[rowSums(is.na(Overlap)) < ncol(Overlap),]
次[行和(is.na(重叠))
编辑

因为你只对重叠矩阵的下半部分感兴趣

 Overlap [upper.tri (Overlap) | col (Overlap) = = row(Overlap)] <- NA
Overlap[upper.tri(Overlap)| col(Overlap)=行(Overlap)]0,]
那么

exc <- apply( Overlap , 1 , function(x) all( is.na(x) ) )

nonoverlap <- Times[ ! exc , ]

exc+1表示行和(我想这里也可以使用行和),但我认为需要将时间df子集。@SimonO101当然可以。我需要做几次。这是个打字错误。哇,太棒了!谢谢你的帮助。希望有一天我能帮助像我这样的新手。
exc <- apply( Overlap , 1 , function(x) all( is.na(x) ) )

nonoverlap <- Times[ ! exc , ]