gpt4 book ai didi

r - 在多列中查找重叠段

转载 作者:行者123 更新时间:2023-12-04 13:33:27 26 4
gpt4 key购买 nike

我有以下数据集,想在单独的列中获取重叠标签的数量 (n.overlaps)、重叠标签的名称 (overlap.labels) 以及重叠的持续时间 (overlap.duration)。

这是我的数据集:

label   begin   end
======================
lower 9.03 12.41
lower 28.773 29.975
lower 33.895 35.992
lower 46.814 48.854
lower 58.51 61.51
lower 62.971 63.491
upper 28.132 30.432
upper 46.716 50.82
upper 58.536 61.482
upper 29.975 33.895
upper 53.376 54.08
upper 10.358 11.958
upper 30.532 46.716
upper 51.633 58.536
head 9.918 14.818
head 29.823 30.623
head 58.802 61.404
head 61.404 63.562

表格,我想得到的是这个:

lower.begin    lower.end    upper.begin     upper.end   head.begin  head.end    n.overlaps  overlap.labels       overlap.duration
9.03 12.41 10.358 11.958 9.918 14.418 3 lower|upper|head 1.6
28.773 29.975 28.132 30.432 29.823 30.623 3 lower|upper|head 0.152
33.895 35.992 30.532 46.716 - - 2 lower|upper 2.097
...

这是表格的可视化表示:

enter image description here

数据

structure(list(label = c("lower", "lower", "lower", "lower", 
"lower", "lower", "upper", "upper", "upper", "upper", "upper",
"upper", "upper", "upper", "head", "head", "head", "head"
), begin = c(9.03, 28.773, 33.895, 46.814, 58.51, 62.971, 28.132,
46.716, 58.536, 29.975, 53.376, 10.358, 30.532, 51.633, 9.918,
29.823, 58.802, 61.404), end = c(12.41, 29.975, 35.992, 48.854,
61.51, 63.491, 30.432, 50.82, 61.482, 33.895, 54.08, 11.958,
46.716, 58.536, 14.818, 30.623, 61.404, 63.562)), .Names = c("label",
"begin", "end"), class = "data.frame", row.names = c(NA, -18L))

最佳答案

这实际上是一条评论,但它带有一张图片。

您想要的输出非常不清楚。具体来说,您的示例数据似乎有三组重叠,颜色为青色、浅绿色和紫红色:

enter image description here

一旦我们同意这些是三个重叠区域,您甚至不清楚您想要什么。

绘图代码

library(data.table); setDT(x)
cols<-c(lower="black",upper="blue",middle="red")
ys<-c(lower=1.8,upper=2.2,middle=2)
par(mar=c(2.1,4.1,4.1,1.1))
x[,{plot(1,type="n",xlim=range(onset,offset),
ylim=c(1.7,2.3),yaxt="n",ylab="",xlab="",
main="Depiction of Intervals")
axis(side=2,at=ys[unique(label)],
labels=unique(label),las=1)}]
rect(x[order(onset)][1,onset],1.7,
x[order(offset)][3,offset],2.3,col="cyan")
rect(x[order(onset)][4,onset],1.7,
x[order(offset)][11,offset],2.3,col="lightgreen")
rect(x[order(onset)][12,onset],1.7,
x[order(offset)][18,offset],2.3,col="plum")
for (lbs in x[,unique(label)]){
x[label==lbs,
arrows(onset,ys[label],offset,ys[label],lwd=3,
code=3,angle=90,length=.07,col=cols[label])]
}

关于r - 在多列中查找重叠段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32271525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com