gpt4 book ai didi

r - 折叠具有重叠范围的行

转载 作者:行者123 更新时间:2023-12-02 04:49:14 24 4
gpt4 key购买 nike

我有一个带有开始和结束时间的数据框:

ranges<- data.frame(start = c(65.72000,65.72187, 65.94312,73.75625,89.61625),stop = c(79.72187,79.72375,79.94312,87.75625,104.94062))

> ranges
start stop
1 65.72000 79.72187
2 65.72187 79.72375
3 65.94312 79.94312
4 73.75625 87.75625
5 89.61625 104.94062

在此示例中,第 2 行和第 3 行中的范围完全在第 1 行的“开始”和第 4 行的停止之间的范围内。因此,重叠的范围 1-4 应折叠为一个范围:

> ranges
start stop
1 65.72000 87.75625
5 89.61625 104.94062

我试过这个:

mdat <- outer(ranges$start, ranges$stop, function(x,y) y > x)
mdat[upper.tri(mdat)|col(mdat)==row(mdat)] <- NA
mdat

现在我只需要弄清楚如何结合所有真实的,但不确定这是否是最好的方法

最佳答案

你可以试试这个:

library(dplyr)
ranges %>%
arrange(start) %>%
group_by(g = cumsum(cummax(lag(stop, default = first(stop))) < start)) %>%
summarise(start = first(start), stop = max(stop))

# A tibble: 2 × 3
# g start stop
# <int> <dbl> <dbl>
#1 0 65.72000 87.75625
#2 1 89.61625 104.94062

关于r - 折叠具有重叠范围的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41747742/

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