knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
activatr
can parse additional information beyond the basic lat/lon data from GPX/TCX files, as well as sample the files for quicker manipulation.
All of the advanced functionality is included in the parse_gpx
or parse_tcx
function with optional arguments. As a reminder, this is what the default parsing would look like and return:
library(activatr) # Get the running_example.gpx file included with this package. filename <- system.file( "extdata", "running_example.gpx.gz", package = "activatr" ) df <- parse_gpx(filename)
knitr::kable(head(df, 5))
If your GPX file contains additional extension information, activatr
can parse that as well. In this case, running_example.gpx
contains heart rate, cadence, and temperature information. We can parse that by setting detail = "advanced"
in parse_gpx
:
df_advanced <- parse_gpx(filename, detail = "advanced")
knitr::kable(head(df_advanced, 5))
Now we can do plots like heart rate over time, or a distribution of cadences:
library(ggplot2) library(dplyr) ggplot(df_advanced) + geom_line(aes(x = time, y = hr), color = "red") ggplot(filter(df_advanced, cad > 80)) + geom_density(aes(x = cad * 2), fill = "blue", bw = 1)
If you're parsing many GPX files or GPX files sampled every second, you often don't need a "full resolution" view of the activity. The every
argument to parse_gpx
allows you to only sample some points from the GPX, speeding up the parsing:
# Parsing as normal gets all of the rows, but takes longer full_time <- system.time({ df_full <- parse_gpx(filename) }) nrow(df_full) full_time # Grabbing every hundredth data point runs much faster sample_time <- system.time({ df_sample <- parse_gpx(filename, every = 100) }) nrow(df_sample) sample_time
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.