← Back to home
Comparison · Infra & APIs

ggfootball vs qol

A side-by-side editorial comparison of ggfootball and qol — release velocity, themes, recent moves, and the top alternatives to consider.

ggfootball vs qol: at a glance

Featureggfootballqol
SectorInfra & APIsInfra & APIs
Velocity score0.00.0
Sparks · 30d00
Top themessports-analytics, r-package, data-scraping, expected-goalssas-to-r, data-wrangling, excel-reporting, tabulation
Last editorial update48m ago2h ago
WebsiteVisit →Visit →

What is ggfootball?

A football-viz package just swapped scraping for an API and broke its own output to do it.

ggfootball is a small R package for plotting expected-goals and shot data, sourced from Understat. Four releases are visible. The 0.2.x line was argument tidying and dependency pruning; 0.3.0 replaced the data-acquisition layer wholesale, moving get_match_shots() from HTML parsing onto Understat's AJAX endpoints and changing the returned column names in the process.

Read the full ggfootball trajectory →

What is qol?

A SAS-to-R comfort layer that has quietly grown into its own dialect.

qol is a one-maintainer R package aimed at analysts moving from SAS: SAS-shaped verbs (compute., if./else_if., retain_value, do_if blocks), format-driven tabulation through any_table()/summarise_plus(), and styled Excel output as the default destination. Releases land roughly monthly and each one is large. The recent line has shifted from adding verbs to letting conditions be written as parsed character strings, which is the closest the package gets to reproducing SAS syntax inside R.

Read the full qol trajectory →

ggfootball vs qol: editorial side-by-side

G
ggfootball
INFRA · APIS
0.0

A football-viz package just swapped scraping for an API and broke its own output to do it.

◆ Current state

ggfootball is a small R package for plotting expected-goals and shot data, sourced from Understat. Four releases are visible. The 0.2.x line was argument tidying and dependency pruning; 0.3.0 replaced the data-acquisition layer wholesale, moving get_match_shots() from HTML parsing onto Understat's AJAX endpoints and changing the returned column names in the process.

◆ Where it's heading

The direction is away from scraped HTML and toward a thinner, more defensible package: four dependencies dropped in 0.3.0 on top of qdapRegex in 0.2.1, input validation added, error messages rewritten. Both breaking changes so far were accepted rather than deferred, which reads as a maintainer treating pre-1.0 as the window to get the shape right. The package is willing to break callers for structural reasons, not cosmetic ones.

◆ Prediction

With the scraper rebuilt and the dependency surface trimmed, the next releases are likely to stabilise the new column names and extend the plotting side, which has seen nothing since 0.2.0. A 1.0 would be the signal that the data structure is now considered fixed.

Q
qol
INFRA · APIS
0.0

A SAS-to-R comfort layer that has quietly grown into its own dialect.

◆ Current state

qol is a one-maintainer R package aimed at analysts moving from SAS: SAS-shaped verbs (compute., if./else_if., retain_value, do_if blocks), format-driven tabulation through any_table()/summarise_plus(), and styled Excel output as the default destination. Releases land roughly monthly and each one is large. The recent line has shifted from adding verbs to letting conditions be written as parsed character strings, which is the closest the package gets to reproducing SAS syntax inside R.

◆ Where it's heading

Three threads are visible across these releases. Syntax fidelity is the newest: ifelse_multi() introduced character-string conditions with SAS-style writing, and if./else_if. immediately picked the style up. Tabulation flexibility is the constant — any_table() gains per-variable statistic selection, nested variable combinations in brackets, vector order_by, compute support. The third is ecosystem plumbing the maintainer builds when a gap appears: file I/O in 1.3.0, a console message system, global style options, macro variables, and in 1.3.2 a code_statistics() script scanner. Renames to dodge data.table and dplyr masking recur often enough to be a pattern.

◆ Prediction

The maintainer flagged the new percentile behaviour as a first iteration that only works with few grouping variables, so a performance pass on it is the clearest outstanding item. Beyond that the character-condition syntax has reached three functions in two releases and looks likely to spread to the remaining filter-bearing verbs.

Alternatives to ggfootball and qol

Other Infra & APIs products tracked by Sparkpulse, ranked by recent ship velocity. Each card links to a full editorial trajectory and lets you pivot into a head-to-head comparison with either ggfootball or qol.

See all ggfootball alternatives → · See all qol alternatives →

Recent activity from ggfootball and qol

Latest ship moves from both products, interleaved chronologically. ⚡ = editorial spark.

  1. 1mo agoqolifelse_multi() brings SAS-style string conditions to R
  2. 2mo agoqolcode_statistics() scans script folders; retain_stat() generalizes
  3. 3mo agoqolcompute. and recode. renamed to dodge dplyr masking
  4. 4mo agoqolFile I/O, a console message system and do_if filter blocks
  5. 5mo agoqolRow and column percentage keywords; reworked dummy data
  6. 6mo agoqolMacro variables, multi-file import/export and text helpers
  7. 6mo agoggfootballggfootball 0.3.0
  8. 6mo agoggfootballggfootball 0.2.2
  9. 1y agoggfootballggfootball 0.2.1
  10. 1y agoggfootballggfootball 0.2.0

Frequently asked questions

What is the difference between ggfootball and qol?

They serve adjacent needs but don't currently overlap on shipped themes. ggfootball and qol are shipping at a similar cadence (velocity 0.0 vs 0.0, both within Sparkpulse's "active" band). See the at-a-glance table above for a side-by-side breakdown of velocity, recent sparks, and editorial themes.

Is ggfootball better than qol?

Sparkpulse doesn't pick a winner — we score release velocity, not feature parity. ggfootball and qol are shipping at a similar cadence (velocity 0.0 vs 0.0, both within Sparkpulse's "active" band). For your specific use case, the alternatives sections above list other Infra & APIs products to evaluate alongside.

What are the best alternatives to ggfootball?

Top ggfootball alternatives in Infra & APIs are ranked by recent ship velocity. Browse the "ggfootball alternatives" section above for the current picks, or visit /alternatives/ggfootball for the full list with editorial commentary on each.

What are the best alternatives to qol?

Top qol alternatives in Infra & APIs are ranked by recent ship velocity. Browse the "qol alternatives" section above for the current picks, or visit /alternatives/qol for the full list with editorial commentary on each.