R/countAfterEventContinuous.R

Defines functions countAfterEventContinuous

#' InflectionPoint
#'
#' @param data add description
#' @param eventVariable add description
#' @param nestingTimeUnit add description
#' @param continuousTimeUnit add description
#' @return df dataframe
#' @export
#' 
countAfterEventContinuous <- function(data, eventVariable, nestingTimeUnit, continuousTimeUnit) {
  df <- data
  df$event <- eventVariable # New generic variable named 'event'
  df$nestingUnit <- nestingTimeUnit # Nesting unit within which continuousTime is cycling through (e.g. "day" containing multiple measurements)
  df$continuousTimeUnit <- continuousTimeUnit
  df$event <- as.numeric(df$event)
  eventCol <- match('event', names(df)) # Stored value = column number of 'y' in fx argument
  df$continuousTime <- continuousTime <- '-999' # Generic 'Count' variable set to -999 starting values
  df$continuousTime <- as.numeric(df$continuousTime)
  continuousTimeCol <- match('continuousTime', names(df))
  continuousTimeUnitCol <- match('continuousTimeUnit', names(df))
  nestingUnitCol <- match('nestingUnit', names(df))
  df$nestingUnit <- as.numeric(df$nestingUnit)
  df$timeSince <- 0
  for (i in 1:dim(df)[1]) { # Cycle through all rows in scope of df
    for (j in 1:dim(df)[2]) { # Cycle through all columns in scope of df
      if (j == continuousTimeCol) {
        if (i == 1) { # If on first row, run this code to avoid (i - 1) problem
          df[1, 'timeSince'] <- df[1, 'continuousTimeUnit']
          if (df[i, eventCol] == 1) {
            df[i, 'continuousTime'] <- 0 # Count = 0 if measurement occasion conflict (+)
          } else {
            if (df[i, eventCol] == 0) {
              df[i, j] <- -999
              #df[i, 'continuousTime'] <- as.numeric(df[i, 'continuousTime'])
            }
          }
        } else { # Now not on first row so (i - 1) term not a problem
          df[i, 'timeSince'] <- df[i, continuousTimeUnitCol] - df[(i - 1), continuousTimeUnitCol]
          if (df[i, nestingUnitCol] != df[(i - 1), nestingUnitCol]) {
            if (df[i, eventCol] == 1) {
              df[i, continuousTimeCol] <- 0
              #df[i, 'continuousTime'] <- as.numeric(df[i, 'continuousTime'])
            } else {
              df[i, continuousTimeCol] <- -999
              #df[i, 'continuousTime'] <- as.numeric(df[i, 'continuousTime'])
            }
          } else {
            if (df[(i - 1), continuousTimeCol] == -999) {
              if (df[i, eventCol] == 0) {
                df[i, j] <- -999
                #df[i, 'continuousTime'] <- as.numeric(df[i, 'continuousTime'])
              } else {
                if (df[i, eventCol] == 1) {
                  df[i, j] <- 0
                  #df[i, 'continuousTime'] <- as.numeric(df[i, 'continuousTime'])
                }
              }
            } else {
              n1 <- df[(i - 1), continuousTimeCol]
              n1 <- as.numeric(n1)
              n2 <- df[i, 'timeSince']
              n2 <- as.numeric(n2)
              df[i, j] <- (n1 + n2)
              #df$count <- df[i, 'count'] <- as.numeric(df[i, 'count'])
            }
          }
        }
      }
    }
  }
  df
}
enaY15/MultilevelFunctions documentation built on Aug. 22, 2020, 4:42 p.m.