Skip to content

Instantly share code, notes, and snippets.

@kissmygritts
Created November 25, 2015 00:20
Show Gist options
  • Save kissmygritts/edc148d957df4acd44b1 to your computer and use it in GitHub Desktop.
Save kissmygritts/edc148d957df4acd44b1 to your computer and use it in GitHub Desktop.
quantification of migration.
library(adehabitatLT)
library(ggplot2)
library(data.table)
data(bear) #LOADS AS CLASS LTRAJ
dat <- as.data.frame(bear)
ggplot(dat = dat, aes(x = date, y = R2n)) + geom_point() + geom_line()
head(dat)
df <- head(dat[, 1:3], 20)
## Munging data
df$dx <- c(diff(df$x), NA)
df$dy <- c(diff(df$y), NA)
df$dist <- sqrt((df$dx**2) + (df$dy**2))
df$NSD <- df$dist**2
# THIS IS THE IMPLEMENTATION OF CALCULATING NSD WITH adehabitatLT::as.ltraj()
fxn <- as.ltraj
foo <- function(x) {
x1 <- x[-1, ]
x2 <- x[-nrow(x), ]
dist <- c(sqrt((x1$x - x2$x)^2 + (x1$y - x2$y)^2), NA)
R2n <- (x$x - x$x[1])^2 + (x$y - x$y[1])^2
dt <- c(unclass(x1$date) - unclass(x2$date), NA)
dx <- c(x1$x - x2$x, NA)
dy <- c(x1$y - x2$y, NA)
abs.angle <- ifelse(dist < 1e-07, NA, atan2(dy, dx))
so <- cbind.data.frame(dx = dx, dy = dy, dist = dist,
dt = dt, R2n = R2n, abs.angle = abs.angle)
return(so)
}
df[-1, ]
df[-nrow(df), ]
###############################
# WORKING WITH A TEST DATASET #
###############################
# MUNGING THE DATA
# converting date time
test <- read.csv("nsdtest.csv")
test$timestamp <- as.character(test$timestamp)
test$timestamp <- as.POSIXlt.character(test$timestamp, format = ("%m/%d/%y %H:%M"))
test$timestamp <- as.POSIXct(test$timestamp)
# converting latlong to utm
geocoord <- SpatialPoints(cbind(as.numeric(test$long_x),
as.numeric(test$lat_y)),
proj4string =CRS("+proj=longlat"))
utmcoord <- as.data.frame(spTransform(geocoord, CRS("+proj=utm +zone=11")))
colnames(utmcoord) <- c("Easting", "Northing")
dat <- cbind(test, utmcoord)
# convert to class adehabitatLT::ltraj, convert to data.frame
toltraj <- as.ltraj(xy = dat[, 7:8], date = dat$timestamp, id = dat$ndowid)
df <- toltraj[[1]]
ggplot(df, aes(x = date, y = R2n)) + geom_point() + geom_line()
# only one location per day
df <- as.data.table(df)
df$cal_date <- strptime(df$date, format = ("%Y-%m-%d"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment