{"id":17795216,"url":"https://github.com/matt-dray/oystr","last_synced_at":"2026-01-19T22:32:11.705Z","repository":{"id":112694035,"uuid":"167794282","full_name":"matt-dray/oystr","owner":"matt-dray","description":":station::ticket: R package: wrangle Oyster-card data supplied by Transport for London","archived":false,"fork":false,"pushed_at":"2021-01-22T10:48:55.000Z","size":366,"stargazers_count":2,"open_issues_count":13,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-12T13:36:15.495Z","etag":null,"topics":["london","oyster","oystercard","r","r-package","r-stats","tfl","transport"],"latest_commit_sha":null,"homepage":"https://matt-dray.github.io/oystr/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matt-dray.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-27T10:04:45.000Z","updated_at":"2021-01-10T15:29:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"97a4f0e8-5a39-46d3-9676-fa73115a5c0d","html_url":"https://github.com/matt-dray/oystr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/matt-dray/oystr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt-dray%2Foystr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt-dray%2Foystr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt-dray%2Foystr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt-dray%2Foystr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matt-dray","download_url":"https://codeload.github.com/matt-dray/oystr/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matt-dray%2Foystr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28587241,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T20:45:59.482Z","status":"ssl_error","status_checked_at":"2026-01-19T20:45:41.500Z","response_time":67,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["london","oyster","oystercard","r","r-package","r-stats","tfl","transport"],"created_at":"2024-10-27T11:25:09.426Z","updated_at":"2026-01-19T22:32:11.688Z","avatar_url":"https://github.com/matt-dray.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://raw.githubusercontent.com/matt-dray/stickers/master/output/oystr_hex.png\" width=\"150\" align=\"right\"\u003e\n\n# oystr\n\n\u003c!-- badges: start --\u003e\n[![Project Status: WIP – Initial development is in progress, but there has not yet been a stable, usable release suitable for the public.](https://www.repostatus.org/badges/latest/wip.svg)](https://www.repostatus.org/#wip)\n[![Travis build status](https://travis-ci.org/matt-dray/oystr.svg?branch=master)](https://travis-ci.org/matt-dray/oystr)\n[![Coverage status](https://codecov.io/gh/matt-dray/oystr/branch/master/graph/badge.svg)](https://codecov.io/github/matt-dray/oystr?branch=master)\n[![CodeFactor](https://www.codefactor.io/repository/github/matt-dray/oystr/badge)](https://www.codefactor.io/repository/github/matt-dray/oystr)\n[![CRAN status](https://www.r-pkg.org/badges/version/oystr)](https://CRAN.R-project.org/package=oystr)\n[![Blog post](https://img.shields.io/badge/rostrum.blog-post-008900?labelColor=000000\u0026logo=data%3Aimage%2Fgif%3Bbase64%2CR0lGODlhEAAQAPEAAAAAABWCBAAAAAAAACH5BAlkAAIAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAAC55QkISIiEoQQQgghRBBCiCAIgiAIgiAIQiAIgSAIgiAIQiAIgRAEQiAQBAQCgUAQEAQEgYAgIAgIBAKBQBAQCAKBQEAgCAgEAoFAIAgEBAKBIBAQCAQCgUAgEAgCgUBAICAgICAgIBAgEBAgEBAgEBAgECAgICAgECAQIBAQIBAgECAgICAgICAgECAQECAQICAgICAgICAgEBAgEBAgEBAgICAgICAgECAQIBAQIBAgECAgICAgIBAgECAQECAQIBAgICAgIBAgIBAgEBAgECAgECAgICAgICAgECAgECAgQIAAAQIKAAAh%2BQQJZAACACwAAAAAEAAQAAAC55QkIiESIoQQQgghhAhCBCEIgiAIgiAIQiAIgSAIgiAIQiAIgRAEQiAQBAQCgUAQEAQEgYAgIAgIBAKBQBAQCAKBQEAgCAgEAoFAIAgEBAKBIBAQCAQCgUAgEAgCgUBAICAgICAgIBAgEBAgEBAgEBAgECAgICAgECAQIBAQIBAgECAgICAgICAgECAQECAQICAgICAgICAgEBAgEBAgEBAgICAgICAgECAQIBAQIBAgECAgICAgIBAgECAQECAQIBAgICAgIBAgIBAgEBAgECAgECAgICAgICAgECAgECAgQIAAAQIKAAA7)](https://www.rostrum.blog/2019/12/23/oystr/)\n\u003c!-- badges: end --\u003e\n\n## Purpose\n\nHandle TfL Oyster journey history data. Under development.\n\nYou can use an [Oyster card](https://oyster.tfl.gov.uk/oyster/entry.do) to pay for public transit on [Transport for London](https://tfl.gov.uk/) (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.\n\nI, and this package, are not associated officially with TfL.\n\n## Install\n\nThe package is under development with no guarantees whatsoever.\n\nInstall with `remotes::install_github(\"matt-dray/oystr\")`.\n\n## Functions\n\nFunctions under development:\n\n* `oy_read()` reads and checks multiple raw journey history files from a folder\n* `oy_clean()` cleans journey history data and engineers new variables\n* `oy_lineplot()` to plot features over time (restricted to train journeys for now)\n* `oy_summary()` for summarising main statistics (restricted to train and bus journeys only)\n* `oy_cols()` contains the TfL colour palette\n\nThere's also anonymised journey history data:\n\n* `journeys_read` is an example of anonymised data read with `oy_read()`\n* `journeys_clean` is the result of using `oy_clean()` on the `journeys_read` data\n\n## Dependencies\n\nDeveloping this package is an exercise in working with minimal dependencies (hopefully zero) and working with good ol' base R functions.\n\n## Limitations\n\nThe 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.\n\nAlso, 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 \u003cnumber\u003e\". I don't know what format this string takes if you travel on a boat, for example.\n\nI would be extremely pleased if someone could share this information.\n\n## Contributing\n\nPlease note that the 'oystr' project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By contributing to this project, you agree to abide by its terms.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatt-dray%2Foystr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatt-dray%2Foystr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatt-dray%2Foystr/lists"}