R/embrData.R

Defines functions embr.create.removalID.messages embr.calc.times.critical.msgs

#
#' @title Add RemovalID to Dataframe of Messages and Link
#
#' @description
#' Link messages dataframe to removals
#' @export
embr.create.removalID.messages <- function(fhdb_Removals, fhdb_Messages){
  for(aircraftID in unique(fhdb_Removals$ACid)){
    print(aircraftID)
    removalData <- subset(fhdb_Removals, ACid == aircraftID)
    for(i in 1:nrow(removalData)) {
      removalDate <- removalData[i, c('Event.Date')]
      nextRemovalDate <- removalData[i, c('Next.Event.Date')]
      id_removal <- removalData[i, c('id')]
      messageData <- fhdb_FaultMessages$ac == aircraftID & as.Date(fhdb_FaultMessages$date_time) - as.Date(removalDate) > 0 & as.Date(fhdb_FaultMessages$date_time) -  as.Date(nextRemovalDate) <= 0
      if(length(which(messageData)) > 0){
        fhdb_FaultMessages[messageData, c('id_removal')] <- id_removal
      }
    }
  }
  fhdb_FaultMessages
}

#
#' @title Add Time.Since.Msg and Previous.Msg.Time for Critical Msgs, CAS and CMC
#
#' @description
#' Identify past msgs (previous time and time since)
#
#' @param  fhdb_FaultMessages dataframe of messages
#' @export
embr.calc.times.critical.msgs <- function(df)
{
  fhdb_CriticalFaultMessages <- arrange(subset(df, cas_message != 120  ), ac, date_time)
  fhdb_CriticalFaultMessages1 <- arrange(subset(df, cas_message != 120 & cmc_message != 4886), ac, date_time)
  fhdb_CriticalFaultMessages2 <- arrange(subset(df, cas_message != 120), ac, date_time)
  fhdb_CriticalFaultMessages3 <- arrange(subset(df, cmc_message != 4886), ac, date_time)
  # Add prev msg date
  fhdb_CriticalFaultMessages$Previous.Msg.Time <- shift.column.down(fhdb_CriticalFaultMessages$date_time)
  fhdb_CriticalFaultMessages$Previous.CriticalMsg.Time <- NA
  fhdb_CriticalFaultMessages$Previous.CriticalMsg.Time <- break.column.bycolumn.down(fhdb_CriticalFaultMessages$Previous.Msg.Time, fhdb_CriticalFaultMessages$ac)
  # Add prev msg date
  fhdb_CriticalFaultMessages1$Previous.Msg.Time <- shift.column.down(fhdb_CriticalFaultMessages1$date_time)
  fhdb_CriticalFaultMessages1$Previous.CriticalCasMsg.Time <- NA
  fhdb_CriticalFaultMessages1$Previous.CriticalCasMsg.Time <- break.column.bycolumn.down(fhdb_CriticalFaultMessages1$Previous.Msg.Time, fhdb_CriticalFaultMessages1$ac)
  # Add prev msg date
  fhdb_CriticalFaultMessages2$Previous.Msg.Time <- shift.column.down(fhdb_CriticalFaultMessages2$date_time)
  fhdb_CriticalFaultMessages2$Previous.CasMsg.Time <- NA
  fhdb_CriticalFaultMessages2$Previous.CasMsg.Time <- break.column.bycolumn.down(fhdb_CriticalFaultMessages2$Previous.Msg.Time, fhdb_CriticalFaultMessages2$ac)
  # Add prev msg date
  fhdb_CriticalFaultMessages3$Previous.Msg.Time <- shift.column.down(fhdb_CriticalFaultMessages3$date_time)
  fhdb_CriticalFaultMessages3$Previous.CmcMsg.Time <- NA
  fhdb_CriticalFaultMessages3$Previous.CmcMsg.Time <- break.column.bycolumn.down(fhdb_CriticalFaultMessages3$Previous.Msg.Time, fhdb_CriticalFaultMessages3$ac)

  # Calculate time to msg
  fhdb_CriticalFaultMessages$Time.Since.Critical.Msg <- NA
  fhdb_CriticalFaultMessages$Time.Since.Critical.Msg <- embr.difftime(fhdb_CriticalFaultMessages$date_time, fhdb_CriticalFaultMessages$Previous.CriticalMsg.Time)
  fhdb_CriticalFaultMessages1$Time.Since.CriticalCas.Msg <- NA
  fhdb_CriticalFaultMessages1$Time.Since.CriticalCas.Msg <- embr.difftime(fhdb_CriticalFaultMessages1$date_time, fhdb_CriticalFaultMessages1$Previous.CriticalCasMsg.Time)
  fhdb_CriticalFaultMessages2$Time.Since.CasMsg <- NA
  fhdb_CriticalFaultMessages2$Time.Since.CasMsg <- embr.difftime(fhdb_CriticalFaultMessages2$date_time, fhdb_CriticalFaultMessages2$Previous.CasMsg.Time)
  fhdb_CriticalFaultMessages3$Time.Since.CmcMsg <- NA
  fhdb_CriticalFaultMessages3$Time.Since.CmcMsg <- embr.difftime(fhdb_CriticalFaultMessages3$date_time, fhdb_CriticalFaultMessages3$Previous.CmcMsg.Time)

  dt <- fhdb_CriticalFaultMessages[,c('id', 'Previous.CriticalMsg.Time', 'Time.Since.Critical.Msg')]
  df <- merge(df, dt, by.x = "id", by.y = "id", all=TRUE)

  dt <- fhdb_CriticalFaultMessages1[,c('id', 'Previous.CriticalCasMsg.Time', 'Time.Since.CriticalCas.Msg')]
  df <- merge(df, dt, by.x = "id", by.y = "id", all=TRUE)

  dt <- fhdb_CriticalFaultMessages2[,c('id', 'Previous.CasMsg.Time', 'Time.Since.CasMsg')]
  df <- merge(df, dt, by.x = "id", by.y = "id", all=TRUE)

  dt <- fhdb_CriticalFaultMessages3[,c('id', 'Previous.CmcMsg.Time', 'Time.Since.CmcMsg')]
  df <- merge(df, dt, by.x = "id", by.y = "id", all=TRUE)

  df
}
marcialbaptista/embrData documentation built on May 21, 2019, 11:28 a.m.