R 将频带矩阵转换为帧并省略某些行?
我以前得到了很多帮助,但我刚刚遇到了另一个问题,我想知道是否有人会有任何见解 在一篇文章中,我写道我有一个数据集(它实际上有大约50行),我们称之为“时间”: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
> 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 , ]