## Calculate step length using R

trajr

trajectory modeling in r

r amt package tutorial

amt package r

trajr an r package for characterisation of animal trajectories

trajr github

calculate turning angle in r

I would like to know if there's a specific function in R that calculates step length, as being the distance (in meters) between two consecutive GPS time-registered locations.

I have a dataset looking as follows:

> head(datagps) Date & Time [Local] Latitude Longitude 1: 2018-06-18 03:01:00 -2.434901 34.85359 2: 2018-06-18 03:06:00 -2.434598 34.85387 3: 2018-06-18 03:08:00 -2.434726 34.85382 4: 2018-06-18 03:12:00 -2.434816 34.85371 5: 2018-06-18 03:16:00 -2.434613 34.85372 6: 2018-06-18 03:20:00 -2.434511 34.85376

And would like to create a column `Step`

which would do such operation as mentionned above. Maybe `geosphere`

package has such function? If not, what would be the most compact way to do this?

Any input is appreciated!

You can use `geosphere`

and calculate the `distHaversine`

between two coordinates:

library(geosphere) distm(c(lon1, lat1), c(lon2, lat2), fun = distHaversine)

Use `mutate`

to add the `Step`

field

**[PDF] Package 'trajr',** If not NULL, step angles are calculated relative to this angle (in radians), other- R rediscretization step length, in the spatial units of trj. Details. Stride length and step length are two important measurements in gait analysis. Gait analysis is a study of how a person walks and runs. Doctors use visual observation and tools to measure and

I vectorized the Haversine function found at https://github.com/michaelmalick/r-malick/blob/master/R/haversine.R

haversine <- function(lon1, lat1, lon2, lat2, r = 6378137) { if(!is.numeric(c(lon1, lat1, lon2, lat2))) stop("Inputs are not numeric") # Convert degrees to radians lon1 <- lon1 * pi / 180 lat1 <- lat1 * pi / 180 lon2 <- lon2 * pi / 180 lat2 <- lat2 * pi / 180 delta.lon <- (lon2 - lon1) delta.lat <- (lat2 - lat1) a <- sin(delta.lat/2)^2 + cos(lat1) * cos(lat2) * sin(delta.lon/2)^2 c <- 2 * asin(min(1,sqrt(a))) d <- r * c return(d) # Distance } vectorized_haversine <- Vectorize(haversine, vectorize.args = c("lon1", "lat1", "lon2", "lat2"))

Next, I used the dplyr functions 'lag' and 'mutate', along with the vectorized haversine function to get the distances between consecutive points (the function 'tribble' was used to recreate `head(datagps)`

).

library(dplyr) tribble( ~`Date & Time [Local]`, ~Latitude, ~Longitude, "2018-06-18 03:000", -2.434901, 34.85359, "2018-06-18 03:06:00", -2.434598, 34.85387, "2018-06-18 03:08:00", -2.434726, 34.85382, "2018-06-18 03:12:00", -2.434816, 34.85371, "2018-06-18 03:16:00", -2.434613, 34.85372, "2018-06-18 03:20:00", -2.434511, 34.85376 ) %>% mutate(Step = vectorized_haversine(Longitude, Latitude, lag(Longitude), lag(Latitude))) Date & Time [Local] Latitude Longitude Step 1 2018-06-18 03:000 -2.434901 34.85359 NA 2 2018-06-18 03:06:00 -2.434598 34.85387 45.90731 3 2018-06-18 03:08:00 -2.434726 34.85382 15.29559 4 2018-06-18 03:12:00 -2.434816 34.85371 15.81292 5 2018-06-18 03:16:00 -2.434613 34.85372 22.62521 6 2018-06-18 03:20:00 -2.434511 34.85376 12.19500

**[PDF] Package 'amt',** culate track statistics (e.g. step lengths, speed, or turning angles), prepare calculated and in the second case the distance to the raster cell with the most relocations. r <- raster::raster(bbox(deer, buffer = 100), res = 40). 3. Calculate your step length. Calculate your step length by dividing the distance you walked by the number of steps you took. If you walked 12 steps in 30 feet, your step length is 2.5 feet. Here’s the math: 30 feet / 12 steps = 2.5 feet per step. 4. Program your step length into your pedometer.

Check out: **gmapdistance**

Note: A string or vector of strings containing the description of the starting point(s). Should be inside of quoutes (""). If more than one word for the same location is used, they should be separated by a plus sign e.g. "Bogota+Colombia". *Coordinates in LAT-LONG format are also a valid input as long as they can be identified by Google Maps.*

https://cran.r-project.org/web/packages/gmapsdistance/gmapsdistance.pdf

The function gmapsdistance uses the Google Maps Distance Matrix API in order to compute the distance(s) and time(s) between two points. In order to be able to use the function, you will need an API key and enable the Distance Matrix API in the Google Developers Console

##### Caveat:

Note that Google has changed its billing practices. (Joy)

*You must have a valid API key and a billing account to access our APIs. When you enable billing, you will get $200 free usage every month for Maps, Routes, or Places. Based on the millions of users using our APIs today, most of them can continue to use Google Maps Platform for free with this credit. Having a billing account helps us understand our developers’ needs better and allows you to scale seamlessly.*

For more information about how to get a key, go to https://developers.google.com/maps/documentation/distancematrix/get-api-key#key

For more information about the Google Maps Distance Matrix API go to https://developers.google.com/maps/documentation/distance-matrix/intro?hl=en

##### Example:

A list with the traveling time(s) and distance(s) between origin(s) and destination(s) and the status

results = gmapsdistance(origin = "38.1621328+24.0029257", destination = "37.9908372+23.7383394", mode = "walking")

**steps: Functions to create and work with steps in amt: Animal ,** Description Usage Arguments Details Value Examples. View source: R/steps.R. Description. step_lengths can be use to calculate step lengths of a track. You may try nchar(c) function for other data types to find the length. Conclusion. In this R Tutorial, we have learned to use nchar(x) to find the string length or number length in R programming language.

**Animal trajectory analysis with trajr,** r can be calculated by calling Mod(TrajMeanVectorOfTurningAngles(trj)) , assuming trj is a Trajectory with constant step length. Within this section� After you calculate the variance of a set of numbers, you have a value whose units are different from your original measurements. For example, if your original measurements are in inches, their variance is in square inches. This is because you square the deviations before you average them. So the variance in the five-score population …

**Animal movement tools (amt): R package for managing tracking data ,** By using common statistical distributions to model step length and turn angle Here, we present the R package amt (animal movement tools) that allows SSFs estimate conditional selection coefficients using a likelihood� Statistical analysis in R is performed by using many in-built functions. Most of these functions are part of the R base package. These functions take R vector as an input along with the arguments and give the result. The functions we are discussing in this chapter are mean, median and mode. Mean

**[PDF] Animal Movement Tools (amt): R-Package for Managing ,** By using common statistical distributions to model step length and turn angle Here, we present the R-package amt (animal movement tools) that allows users Step-Selection Functions estimate conditional selection. One common type of problem that employs ratios may involve using ratios to scale up or down the two numbers in proportion to each other. Multiplying or dividing all terms in a ratio by the same number creates a ratio with the same proportions as the original, so, to scale your ratio, multiply or divide through the ratio by the scaling factor. [4]

##### Comments

- Thank you for your answer. When using distm() how can I specify the c() arguments according to my syntax in the post? I'm using the following but I'm rather new to R so I'm totally unsure:
`> datagps$Step<-distm(c(datagps$Longitude, datagps$Latitude), c(datagps$Longitude+1, datagps$Latitude+1), fun = distHaversine) Error in .pointsToMatrix(x) : Wrong length for a vector, should be 2`

- I've used your script but getting the following error:
`> vectorized_haversine <- Vectorize(haversine, vectorize.args = c("lon1", "lat1", "lon2", "lat2")) > mutate(datagps$Step = Error: unexpected '=' in "mutate(datagps$Step =" > vectorized_haversine(datagps$Longitude, datagps$Latitude, lag(datagps$Longitude), lag(datagps$Latitude))) Error: unexpected ')' in " vectorized_haversine(datagps$Longitude, datagps$Latitude, lag(datagps$Longitude), lag(datagps$Latitude)))"`

Am I writing the script in a bad syntax or is there something else? - I'm not totally sure. The code I posted works for me. Did you change
`Step =`

to`datagps$Step =`

inside of the mutate function? If so, just use`Step =`

. Try:`datagps_with_steps <- datagps %>% mutate(Step = vectorized_haversine(Longitude, Latitude, lag(Longitude), lag(Latitude)))`