R/loggerTimegaps.R

Defines functions loggerTimegaps

Documented in loggerTimegaps

#' Radiotracking logger failure detection
#'
#' @description Detects gaps in logger files based on keep alive times
#'
#' @param logger_data logger data.frame from read_logger_folder
#' @param aliveTime time threshold [minutes] between two logger entries
#'
#' @return data.frame with station name, receiver, start and end timestamps of failure
#'
#' @author Marvin Ludwig, Jannis Gottwald
#'
#' @export
#'



loggerTimegaps <- function(logger_data, aliveTime = 6){

  # only the keepAlive signals
  logger_data <- logger_data[logger_data$max_signal == 0,]
  logger_data$receiver <- as.character(logger_data$receiver)

  # for every receiver:

  ur <- unique(logger_data$receiver)

  res <- lapply(seq(length(ur)), function(x){

    cur <- logger_data[logger_data$receiver == ur[x],]
    cur <- cur[order(cur$timestamp),]


    # time difference between two signals
    cur$timediff <- 0

    for(i in seq(nrow(cur)-1)){
      cur$timediff[i+1] <- difftime(cur$timestamp[i+1], cur$timestamp[i], units = "min")
    }


    # find hole timestamps
    gaps <- which(cur$timediff > aliveTime)

    return(data.frame(station = cur$Name[gaps],
                      receiver = cur$receiver[gaps],
                      start = cur$timestamp[gaps -1],
                      end = cur$timestamp[gaps]))

  })

  res <- do.call(rbind, res)
  return(res)


}
Nature40/UM2Radiotracking documentation built on Aug. 14, 2019, 8:05 a.m.