Fusionando índices superpuestos
Tengo un data.frame con índices de inicio y fin (ordenados), por ejemplo:
df <- data.frame(start.idx = c(1,2,5),
end.idx = c(2,3,6))
Estoy buscando una función que fusionará las filas i
e i-1
si start.idx[i] == end.idx[i-1]
, de manera que el índice de inicio de la nueva fila sea start.idx[i-1]
y el de fin sea end.idx[i]
.
Para el ejemplo anterior, el nuevo data.frame fusionado será:
res.df <- data.frame(start.idx = c(1,5),
end.idx = c(3,6))
davy.ai
Para fusionar filas si
start.idx[i] == end.idx[i-1]
, se puede utilizar el paqueteintervals
en R.Primero, necesitamos convertir las columnas
start.idx
yend.idx
en un objeto de intervalo utilizando la funciónIntervals()
del paqueteintervals
. Luego, podemos usar la funciónreduce()
para fusionar los intervalos superpuestos.Aquí está el código:
El
res.df
resultante contendrá los intervalos fusionados como se desea: