Ahoi again!
I am not sure, if this works exactly as you wish, but maybe it helps:


#this function gives TRUE for the first observation on each day when a new 10 
days sequence starts
foo3 <- function(date) {
     tmp <- as.Date(date)             #in this format i can add 10 days without 
problems
     tmp1 <- date                     #to develop the function
     days <- levels(as.factor(tmp))   #what days do we have?
     sel_int <- rep(F,length(days))   #vector creation to mark the time steps 
(in the days)
     mark <- seq(1,length(sel),10)    #10 days sequece
     sel_int[mark] <- T               #all 10 days we have a TRUE
     sel_ext <-  rep(F,length(date))  #the marked vektor to start the new burst
     first_on_this_day <- c()
     for(i in 1:length(days)){
           first_on_this_day <- min(tmp1[tmp==days[sel_int][i]])
           sel_ext[which(tmp1==first_on_this_day)] <- T         #mark on the 
first observation on that day
     }

     return(sel_ext)
}
cltr2<-cutltraj(ltr1,"foo3(date)",nextr=F)





-----Ursprüngliche Nachricht-----
Von: [email protected] 
[mailto:[email protected]] Im Auftrag von Don Carlos
Gesendet: Samstag, 9. August 2014 13:09
An: [email protected]
Betreff: [R-sig-eco] segmenting (split) ltraj objects (adehabitatLT) into 10 
day bursts

Dear list,

I have been trying to find a way to segment (split) ltraj into regular bursts 
according to a temporal window (i.e. bursts containing 10 days of relocations).

The conceptual way I thought to implement this was to 1) extract the start date 
and end date from the ltraj summary list for each burst (bursts have varying 
start and end dates), 2)  for each of these vectors create a sequence (seq) 
using start and end dates and defining a 10 day interval, 3) use this to in 
conjunction with cutltraj to cut ltraj into 10 day segments.

I have not succeed in implementing this but below a reproducible example taken 
from the LT package and the steps as outlined. Any suggestions or pointers much 
appreciated.

install.packages("adehabitatLT")
data(capreochiz)
ltr1<- as.ltraj(xy = capreochiz[,c("x","y")],
                date = capreochiz$date,
                id = "Roe.Deer", typeII = TRUE,
                infolocs = capreochiz[,4:8])

sum<-summary(ltr1)

#extracting the min and max dates per burst (in this example #only one but 
often many bursts per ltraj. Ideally bound.dates #should round date.start and 
date.end up or down to the start of #the day and end of the day

bound.dates <- seq(min(sum$date.begin)-1,max(sum$date.end)+1,by="day")

#Below ideally what I would like to do but obviously not working

#as "bound.dates" not a logical expression. How could one #be constructed?

cltr1<-cutltraj(ltr1,"bound.dates",nextr=TRUE)

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-ecology mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-sig-ecology

_______________________________________________
R-sig-ecology mailing list
[email protected]
https://stat.ethz.ch/mailman/listinfo/r-sig-ecology

Reply via email to