This function reads GTFS text files from a local or remote zip file. It also validates the files against the GTFS specification by file, requirement status, and column name The data are returned as a list of dataframes and a validation object, which contains details on whether all required files were found, and which required and optional columns are present.

read_gtfs(path, local = FALSE, quiet = TRUE, geometry = FALSE,
  frequency = FALSE)



Character. url link to zip file OR path to local zip file. if to local path, then option local must be set to TRUE.


Boolean. If the paths are searching locally or not. Default is FALSE (that is, urls).


Boolean. Whether to see file download progress and files extract. FALSE by default.


Boolean. Whether to add simple feature dataframes of routes and stops to the gtfs object


Boolean. Whether to add frequency/headway calculations to the gtfs object


A GTFS object. That is, a list of dataframes of GTFS data.


#> #> Attaching package: ‘dplyr’
#> The following objects are masked from ‘package:tidytransit’: #> #> between, first, last
#> The following object is masked from ‘package:testthat’: #> #> matches
#> The following objects are masked from ‘package:stats’: #> #> filter, lag
#> The following objects are masked from ‘package:base’: #> #> intersect, setdiff, setequal, union
u1 <- "" sample_gtfs <- read_gtfs(u1) attach(sample_gtfs) #list routes by the number of stops they have routes %>% inner_join(trips, by="route_id") %>% inner_join(stop_times) %>% inner_join(stops, by="stop_id") %>% group_by(route_long_name) %>% summarise(stop_count=n_distinct(stop_id)) %>% arrange(desc(stop_count))
#> Joining, by = "trip_id"
#> # A tibble: 5 x 2 #> route_long_name stop_count #> <chr> <int> #> 1 City 5 #> 2 Airport - Amargosa Valley 2 #> 3 Airport - Bullfrog 2 #> 4 Bullfrog - Furnace Creek Resort 2 #> 5 Stagecoach - Airport Shuttle 2