2014-09-05

Calcular el número de transbordos en una ruta con igraph

Title Anteriormente calculamos el trayecto recomendado entre dos estaciones. En concreto, el camino más corto sin tener en cuenta el número de transbordos. En esta entrada retomamos el ejemplo para calcular el número de transbordos entre dos estaciones.

Datos

El primer paso es introducir la información en nuestros datos. Para ello introducimos una tercera columna con la variable línea.

Importación

require(igraph)
estaciones <- read.csv2("estaciones.csv")

Cálculos

g <- graph.data.frame(estaciones, directed = FALSE) # Creamos el igraph
# Indicamos en el output que devuelva ambos: edges y vertices
gsp <- get.shortest.paths(g, from = "Quevedo", to = "O'Donnell", output = "both" ) 
# Vértices de la ruta
V(g)[gsp$vpath[[1]]] 
Vertex sequence:
[1] "Quevedo"           "Canal"         "Alonso Cano"   "Gregorio Marañón"  
[5] "Avenida de América""Diego de León" "Manuel Becerra" "O'Donnell"    
# Aristas de la ruta
E(g)[gsp$epath[[1]]]
Edge sequence:
                                              
[50]  Canal              -- Quevedo           
[169] Alonso Cano        -- Canal             
[168] Alonso Cano        -- Gregorio Marañón  
[167] Gregorio Marañón   -- Avenida de América
[136] Avenida de América -- Diego de León     
[135] Diego de León      -- Manuel Becerra    
[134] O'Donnell          -- Manuel Becerra 
# Líneas de la ruta
lineas <- E(g)[gsp$epath[[1]]]$linea
data.frame(lineas)
  lineas
1 Linea2
2 Linea7
3 Linea7
4 Linea7
5 Linea6
6 Linea6
7 Linea6
# Número de transbordos
num.transbordos <- sum(head(lineas,-1) != tail(lineas,-1))
num.transbordos
[1] 2
Referencias:

No hay comentarios:

Publicar un comentario

Nube de datos