Introduction to SKYNET

SKYNET is a flexible R package that allows generating bespoke air transport statistics for urban studies based on publicly available data from the Bureau of Transport Statistics (BTS) in the United States.

SKYNET's segments

SKYNET is effectively divided into four segments:

  1. Import Data
  2. Generate Air Networks
  3. Plot Air Networks

Import Data

To import data, simply type import_db1b() or import_t100() including the path to your desired file. Note: we recommend naming the files with a similar structure as Ticket 2016Q1.csv or Coupon 2016Q1.csv respectively.

 import_db1b("folder/Coupon 2016Q1.csv", "folder/Ticket 2016Q1.csv")

The BTS DB1B data consists of 2 sets of files, Coupon and Ticket. They can be both downloaded at and respectively.

Despite being possible to download the complete zipped file, which includes all variables, due to its size, we recommend selecting the following set.

knitr::kable(data.frame(Coupon = c("Itinerary ID", "Market ID", "Sequence Number", "Origin City Market ID",  
"Origin", "Year", "Quarter", "Destination City Market ID", "Destination", "Trip Break", "Operating Carrier", 
"Distance", "Gateway"),
Ticket = c("Itinerary ID", "Roundtrip", "Itinerary Yield", "Passengers",
"Itinerary Fare", "Bulkfare Indicator", "Distance Full","","","","","","")))

Since version 1.0.2 that the import method changed being the netimport() function no longer available. When importing from the prezipped DB1B file, just add the argument zip = TRUE to the import_db1b() function. This does not apply to the T100 file which can be simply imported by typing import_t100(). In order to save space, it is possible as well to import the prezipped file, and convert it to a smaller file with only the necessary variables, with the function convert_raw().

When importing files from the T100 dataset, we recommend naming the file as T100 year mkt for the Market dataset and T100 year seg for the Segment dataset.

Create networks

SKYNET creates three types of networks and an extra option:

  1. Directed Network - make_net_dir()
  2. Undirected Network - make_net_und()
  3. Path Network - make_net_path()
  4. Metro Network - To be used as argument in make_net_dir() and make_net_und()
  5. International Option - make_net_int()

When generating a network, SKYNET, creates a list which includes:

  1. Dataframe from original data (example below)
  2. iGraph object
  3. Dataframe with nodes(airports) statistics
options(knitr.table.format = "html") 
rownames(OD_Sample) <- NULL
knitr::kable(head(OD_Sample, 5)) %>% kable_styling()

When generating a network with SKYNET, it is possible use the following arguments:
1. carriers - groups OD data per carrier when TRUE

To extract the backbone of the network:
1. cap (to be used with pct) - filters the network based on a given percentage (default percentage = 10%)
1. disp (to be used with alpha) - filters the network using the Serrano et all backbone extraction algorithm (default alpha = 0.003)

Create Maps

One of SKYNET's advantages is the possibility of plotting maps without having to recur to external software.

Typing net_map(skynet_object) plots a ggplot2 based map with OD information. When specifying the group by carrier option when generating a network, net_map() distinguishes carriers with different colors. The pct argument allow to plot only a percentage of the available data. It is important to point the path to the dataframe created by SKYNET.

test <- make_net_dir(OD_Sample)
net_map(test, pct = 10)

Extra Functions

SKYNET, allows as well to perform quick searches on both airports and carriers, by their IATA code. find_airport(), find_carrier().


With version 1.0.2, we included the option to bootstrap networks and retrieve certain network statistics.

test <- make_net_dir(OD_Sample)
boot_network(test$gDir, n = 10)

Try the skynet package in your browser

Any scripts or data that you put into this service are public.

skynet documentation built on June 17, 2022, 5:05 p.m.