Расчет суточного максимального смещения животного - PullRequest
0 голосов
/ 27 октября 2018

Я новичок в R и мне нужна помощь. У меня есть данные о перемещении животных со следующими столбцами: "TagID", "Date", "location.long", "location.lat"

Мне нужно найти расстояние между последовательными точками GPS отдельно для каждого дня и для каждого отдельного . После этого я пытаюсь найти максимальное смещение t для этого дня, которое означает расстояние между первой точкой дня и самой дальней точкой этого животного в тот же день.

Вот структура данных :

    TagID   Date      location.long location.lat
1   6634 2018-10-22     10.311283     48.20341
2   6634 2018-10-22     10.319261     48.18381
3   6634 2018-10-22     10.321538     48.15845
4   6634 2018-10-22     10.293819     48.15497
5   6634 2018-10-22     10.369189     48.12718
6   6634 2018-10-22     10.333642     48.14402
7   6634 2018-10-23     10.256952     48.12419
8   6634 2018-10-23     10.283222     48.11557
9   6634 2018-10-23     10.264805     48.10601
10  6634 2018-10-23     10.358082     48.07012
11  6634 2018-10-23     10.310423     48.03421
12  6678 2018-10-22      9.981601     48.24799
13  6678 2018-10-22      9.999586     48.22714
14  6678 2018-10-22      9.963930     48.29394
15  6678 2018-10-22      9.989562     48.17918

До сих пор я достиг этой точки:

mydata <- read.csv("tracking.csv")
onlcoor <- subset (mydata, select = c("location.long","location.lat"))
m <- as.matrix(onlcoor)
#Creates a matrix witht the distances between each point in the dataset
mydata$dist <- distm(m, fun=distVincentyEllipsoid)
#Returns the maximum distance between the first point the farthest from it
mydata$displacement <- max(mydata$dist[,1])

Он вычисляет расстояние между последовательными точками и возвращает смещение (расстояние между первой и самой дальней точками от него).

Теперь я хотел бы добавить два условия в код

  1. TagID не считается. Следовательно, расстояние для последнего местоположения животного будет сгенерировано с использованием первого местоположения нового животного, когда расстояние должно быть NA.
  2. Дата также должна быть принята во внимание, потому что мне нужно максимальное суточное смещение каждого человека

Вот код, который наконец-то сработал для меня:

mydata <- read.csv("tracking.csv")    
mydata <- split(mydata, list(mydata$TagID, mydata$Date), drop = TRUE)
displacem <- sapply(mydata, function(mydata){
     onlcoor <- subset (mydata, select = 
c("location.long","location.lat"))
     m <- as.matrix(onlcoor)
     mydata$dist <- distm(m, fun=distVincentyEllipsoid)
     mydata$displ <- max(mydata$dist[,1]) 
   })
write.table(displacem, file = "maximum_displacement.csv",row.names=FALSE, 
na="",col.names=FALSE, sep=",")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...