skiresultsR provides a thoughtful set of functions to extract race data from HTML files generated at skiresults.co.uk. It is designed to work with an event, extracting all races, racers and their clubs. Other information about the event is also captured.
- Event Extraction - Get event data with a single function call
- Race(s) - Get individual race results for further analysis
- Points - Get points from (scoring) races
- Racer / Club Information - Get racer, club details
# Or install development version from GitHub
devtools::install_github("justinjtownsend/skiresultsR")library(skiresultsR)
# Get path to sample data
file_path <- system.file("extdata", "chatham_oct2023.html", package = "skiresultsR")
# Extract complete event data
event_data <- get_event(file_path)
# View event summary
print(event_data[[1]]$event_dtls$title)
#> [1] "Chatham Ski Slope: LSERSA (07 October 2023)"
# View available races
names(event_data[[1]]$races)
#> [1] "race-9973" "race-9981" "race-9974" "race-9975" "race-9976"
# Get racers
head(event_data[[1]]$racers)| Function | Purpose | Returns |
|---|---|---|
get_event() |
Get complete event data | List with all components |
get_races() |
Get all race tables | List of race data frames |
get_race() |
Get specific race by ID/type | Single race data frame |
| Function | Purpose | Returns |
|---|---|---|
get_racers() |
Get racers with links | Data frame |
get_points() |
Get points across races | Data frame |
get_event_summary() |
Get event statistics | List of data frames |
get_race_types() |
Get race tyes | Data frame |
# Quick event overview
summary <- get_event_summary(event_data[[1]])
cat("Total Racers:", summary[[1]]$race_summary$tot_racers)
cat("DNFs", summary[[1]]$race_summary$overall_time_dnf)
cat("Aldershot Racers:", summary[[1]]$race_participation$club_ASR)
cat("")
cat("Overall Fastest Time:", summary[[1]]$race_summary$overall_time_fastest)
# Get a specific race
race_data <- get_race(file_path, "race-9973")
# Get points across all categories
points <- get_points(file_path, "race-9973")
The package returns consistent, well-structured data:
event_data <- get_event(file_path)
str(event_data, max.level = 2)
#> List of 1
#> $ 1319:List of 6
#> ..$ event_dtls:'data.frame': 1 obs. of 6 variables:
#> ..$ race_types: tibble [5 × 4] (S3: tbl_df/tbl/data.frame)
#> ..$ races :List of 5
#> ..$ racers : tibble [97 × 7] (S3: tbl_df/tbl/data.frame)
#> ..$ points :List of 2
#> ..$ clubs : tibble [10 × 2] (S3: tbl_df/tbl/data.frame)
#> ..- attr(*, "class")= chr [1:2] "skiresults_event" "list"
The package includes sample HTML files for testing and examples:
chatham_oct2023.html- Chatham Ski Slope event from October 2023brentwood_jun2023.html- Brentwood Park event from June 2023
# List available sample files
list.files(system.file("extdata", package = "skiresultsR"))- Vignette: Getting Started with skiresultsR
- Function Reference: Reference Documentation
- Package Website: skiresultsR Documentation
This project is licensed under the MIT License - see the LICENSE file for details.
citation("skiresultsR")rvest- Web scraping (used internally)xml2- XML/HTML parsing (used internally)dplyr- Data manipulation (recommended for analysis)ggplot2- Data visualization (recommended for plotting)
skiresultsR - Making ski race data analysis accessible in R 🎿📊
