Skip to content
🚉🎫 R package for wrangling personal Oyster history data supplied by TfL
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
R Fix brokwn hex colours Dec 23, 2019
docs Update vignette (minimally) Dec 22, 2019
inst/extdata Add draft vignette and add CSV datasets to inst/ to be referred to in… Sep 25, 2019
pkgdown/favicon Add badge, favicon, bugreports, url, bootswatch Oct 3, 2019
vignettes Update vignette (minimally) Dec 22, 2019
.gitignore Add DS_Store to gitignore Aug 8, 2019
.travis.yml Add code of conduct, pkgdown, update readme Aug 10, 2019
DESCRIPTION Increase test coverage Dec 22, 2019
LICENSE Update description, license, add .R files Jan 27, 2019
NAMESPACE Rebuild pkgdown Dec 22, 2019
_pkgdown.yml Rebuild pkgdown Dec 22, 2019
codecov.yml Add codecov Aug 9, 2019
oystr.Rproj Use create_package Jan 27, 2019


CRAN status Lifecycle: experimental Travis build status Coverage status


Handle TfL Oyster journey history data. Under development.

You can use an Oyster card to pay for public transit on Transport for London (TfL) services. You can opt-in to monthly emails with your journey history attached as a CSV. Functions in this package help to read, handle and summarise these data.

I, and this package, are not associated officially with TfL.


The package is under development with no guarantees whatsoever.

Install with remotes::install_github("matt-dray/oystr").


Functions under development:

  • oy_read() reads and checks multiple raw journey history files from a folder
  • oy_clean() cleans journey history data and engineers new variables
  • oy_lineplot() to plot features over time (restricted to train journeys for now)
  • oy_summary() for summarising main statistics (restricted to train and bus journeys only)
  • oy_cols() contains the TfL colour palette

There's also anonymised journey history data:

  • journeys_read is an example of anonymised data read with oy_read()
  • journeys_clean is the result of using oy_clean() on the journeys_read data


Developing this package is an exercise in working with minimal dependencies (hopefully zero) and working with good ol' base R functions.


The format of journey history data from TfL have remained pretty consistent for a number of years and there's no reason to believe that this will change anytime soon. It could though. In which case, these functions may fail.

Also, I asked TfL for details of all the possible forms of their column 'Journey/Action', which includes things like station start and end, bus route and much more. They were unable to provide this information. Therefore, the oy_clean() function can only parse formats that I'm personally aware of (train and bus, mostly) given my own Oyster history data. For example, I know the exact string for bus journeys is "Bus journey, route ". I don't know what format this string takes if you travel on a boat, for example.

I would be extremely pleased if someone could share this information.


Please note that the 'oystr' project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

You can’t perform that action at this time.