#####Código de exemplo de Laila Viana#####
library(tibble)
sample ← tibble(name = “test”,
start = c(25,46,55,67,324,352,353,354,481),
end = c(39,60,69,80,338,365,367,367,494))
#####Fim do código de exemplo de Laila Viana#####
#####Calculando a intercessão#####
inter = sample$start[-1] <= sample$end[-length(sample$end)]
#####Fim do cálculo da intercessão#####
#####Selecionando os intervalos sem interceção#####
start = sample$start[c(T,!inter)]
end = sample$end[!c(inter,F)]
#####Fim da seleção dos intervalos sem interceção#####
################################
#####Juntando os resultados#####
################################
cbind(start,end)
########################
#####Fim resultados#####
########################
#################################################
#Como também foi feito um pedido de performance##
#A partir daqui é somente um teste de perfomance#
#################################################
set.seed(34) #Só para que os resultados fiquem iguais
n=1028581 #Número de linhas, seria o valor máximo?
n=1963 #Número de grupos
#####Geração de dados#####
#tentando simular as características dos dados originais#
aleatorio = sort(round(1/rexp(n,n/20)))
aleatorio1 = sort(round(1/rexp(n,n/20)))
start = cumsum(aleatorio)
end = start+aleatorio1
head(cbind(start,end))
#####Fim da geração de dados#####
#####Calculando intercessão#####
inter = start[-1]<end[-length(end)]
#####Fim do cálculo da intercessão#####
#####Verificando a porcentagem de grupos com intercessão#####
100*sum(inter)/length(inter)
#####Fim da verificação da porcentagem de grupos com intercessão#####
#####Criando os intervalos selecionados#####
start_final = start[c(T,!inter)]
end_final = end[!c(inter,F)]
#####Fim da criação dos intervalos selecionados#####
#####Juntando os resultados#####
(resultado_final = cbind(start_final,end_final))
#####Fim resultado final#####
#####Verificando a dimensão dos resultados#####
dim(resultado_final)
#####Fim da verificação dos resultados#####
#####Verificando o valor máximo (número de linhas)#####
max(end_final)
#####Fim da verificação do valor máximo#####
####Esse código rodou super rápido na minha máquina, cerca de 5 segundos!
Espero ter ajudado!####