Skip to contents

As of July 10, 2024, the use of `get_tests_...` functions has been deprecated in favor of the expanded usage of `get_tests`. The base `get_tests` function has been expanded to accept all arguments from the other `get_tests_...` variations. All `get_tests_...` functions will be superseded January 01, 2025.

The most common functions used in the hawkinR package are obviously the multiple get_tests functions. They are the primary functions of the package that supports it’s main purpose: querying your tests data. To minimize code and simplify the API requests, the get_tests function has a couple of variations for specific use cases.

Request Any and All Tests

The primary function to call tests is get_tests. This is a base request for tests that, as of 2024-07-10, accepts all arguments : ‘from’, ‘to’, ‘sync’, ‘active’, ‘athleteId’, ‘testTypeId’, ‘teamId’, and ‘groupId’. Using this function, you have complete control of the tests being requested from the cloud.

It is important to understand that requests can NOT include any combination of ‘athleteId’, ‘testTypeId’, ‘teamId’, or ‘groupId’. This will result in and error. Any of these arguments CAN be used with ‘from’, ‘to’, ‘active’, and ‘sync’.

In this function, the same as all of the get_tests variations, ‘from’ and ‘to’ are optional inputs where a UNIX datetime can be provided to limit the tests called to a specific time frame. They are set to NULL by default, and when left alone will call all tests.

# Call all tests
tests <- get_tests()

# Tests in 2022
# as.numeric() and as.POSIXct are base R functions
fromDate <- as.numeric(as.POSIXct("2022-01-01")) # returns a UNIX datetime value of 1641024000
toDate <- as.numeric(as.POSIXct("2023-01-01")) # returns a UNIX datetime value of 1672560000

# Call all tests between Jan 1 2022 and Jan 1 2023
tests2022 <- get_tests(from = fromDate, to = toDate)

Finding IDs

First, it is important to remember a few specifics of the HD athlete data structure. All unique entities have unique IDs. This includes athletes, tests types, teams, and groups. Each athlete MUST be a part of a team, but MAY optionally be in a group. Also, athletes can be a part of multiple teams and multiple groups. To see which teams and/or groups an athlete is a part of, you can find this in the data frame returned from get_athletes. For more information on this, you can go to the Getting Started page for specifics.

# Store player info in object called roster. 
# 'inactive' is default to FALSE. Set to TRUE if you want to include inactive athletes.
roster <- get_athletes(inactive = FALSE)
id name active teams groups external
0kEjAzSLpBwUZc4Yp2Ov Athlete One TRUE 09u20ij0dj0 0j20j09jd9ud0j AMS:dj0203j0dj,GPS:md029j3209j2
1E1zYBv0CKbrKnsKz1vj Player Two TRUE 09u20ij0dj0 0j20j09jd9ud0j,92d2098d02j0 AMS:oin208ju09,GPS:od093j32
1lXEZKkNuNwvMLXiqFRr Person Three TRUE 9308dj209dj AMS:j029j0jd20j,GPS:0d28j098h3

Get Tests By Athlete

As for all of the get_tests_ variations, there is one mandatory parameter (id) and 2 optional parameters (from and to). For the get_tests_ath form, we simply input a single athlete’s unique ID. Again, this is found in the ‘id’ column of the data frame returned from get_athletes. Remember we can only use this function to request tests for a singular athlete. If you wanted to call multiple athletes, this would be done with get_tests_group or get_tests_team. As you can create as many groups as you need in the cloud and use their groupId in the request, as shown below.

Here we will request all tests for Athlete One:

# get athlete ID
athID <- roster$id[roster$name == "Athlete One"]

# call tests
testsAth1 <- get_tests_ath(athleteId = athID)

Get Tests By Test Type

Similarly to tests by athlete, we can call for tests of a singular type. This is a great option when organizing tests for specific analysis based on tests type. This allows you to create a separate data frame for each test type with out having to filter the in later steps. And this limits the metrics returned to those specific to that test type. As the other get_tests functions will have columns for all possible variables, and makes a very wide data frame.

In this example we will request only Multi Rebound test trials:

# get test type IDs
types <- get_testTypes()

# get test ID for Multi Rebound
typeID <- types$id[types$name == "Multi Rebound"]

# Call for multi rebound tests
testsMR <- get_tests_type( typeId = typeID)

Get Tests By Team/Group

As you saw above in the ‘roster’ data frame, when an athlete is a part of a team or group, the ID of the team/group is included in the string value of that variable. While those IDs are not easy for us to read or memorize, we don’t have to. Those IDs are accessible with the team/group given name in the data frames returned from the get_teams and get_groups functions.

Get Team Tests

Now that you have the team IDs , you have everything you need to call in the test data using the get_tests_team function. This function has three parameters: teamId, from, and to. In this function, the same as all of the get_tests variations, ‘from’ and ‘to’ are optional inputs where a UNIX datetime can be provided to limit the tests called to a specific time frame. They are set to NULL by default, and when left alone will call all tests that meet the teamId criteria. As for the ‘teamId’ parameter, that is a required string of one or more team IDs. If you want to call in data for more than one team, you simply enter all of the IDs as a list, vector, or in a single comma separated string.

Teams:

# store team info in an object called teams.
teams <- get_teams()
id name
09u20ij0dj0 Team One
9308dj209dj Team Two

In this example, we will request for tests of Team One since Jan 1, 2022:

# get Team One teamId
teamID <- teams$id[teams$name == "Team One"]

# set from date
fromDate <- as.numeric(as.POSIXct("2022-01-01"))
# as.numeric() and as.POSIXct are base R functions, and returns a UNIX datetime value of 1641024000

# create request for team tests
teamTests <- get_tests_team(teamId = teamID, from = fromDate)

This will return all tests for Team One since January 1, 2022.

Get Group Tests

All of the same operations for the get_tests_team function apply to the get_tests_group function. The only difference is that the first parameter is for ‘groupId’ instead of ‘teamId’. It is important to note that you can’t use these queries interchangeably or together. Entering a team’s ID into the ‘groupId’ parameter won’t produce any returns as the ID won’t match any values for that parameter. This is why there are two separate functions.

Groups:

# store group info in an object called groups.
groups <- get_groups()
id name
0j20j09jd9ud0j Position Group
92d2098d02j0 Grad Year Group

For the group example, we will call for all tests of multiple groups (Position Group, Grad Year Group) up until May 1, 2023:

# get group IDs
group1ID <- groups$id[groups$name == "Position Group"]
group2ID <- groups$id[groups$name == "Grad Year Group"]

# paste group IDs to make single string value
groupIDs <- paste(group1ID,group2ID, sep = ",") # set 'sep' to "," for comma seperated string
# returned value will be "0j20j09jd9ud0j,92d2098d02j0"

# set from date
toDate <- as.numeric(as.POSIXct("2023-05-01"))
# as.numeric() and as.POSIXct are base R functions, and returns a UNIX datetime value of 1682924400

# create request for group tests
groupTests <- get_tests_group(groupId = groupIDs, to = toDate)

This will return all tests from the ‘Position Group’ and ‘Grad Year Group’ groups up until May 1, 2023.


All of the test trials have there own unique ID. This testId is what is used in the get_forcetime function to call in the raw data from that trial. See Accessing Force-Time Data of A Test for more information.