R/Check_Daily_Updates.r

Defines functions Check_Daily_Updates

Documented in Check_Daily_Updates

#' Check_Daily_Updates
#' 
#' For each location, check for daily updates and then check
#' for daily records.  If there are gaps, pad out information
#' so there is a consecutive record.
#' 
#' @param corona_m data frame with corona virus data from WHO
#' 
#' @export
#' 
#' 
Check_Daily_Updates <- function(corona_m){
  
  # for each location, check for daily updates
  loc <- unique(corona_m$location)
  corona_update <- NULL
  
  for(i in 1:length(loc)){
    tmp <- corona_m[corona_m$location == loc[i],]
   # tmp <- subset(corona_m, location == loc[i])
    dd <- diff(tmp$date)
    
    if(!(all(dd == 1))){
      # pad out records
      start_date <- tmp$date[1]
      end_date <- tmp$date[nrow(tmp)]
      d_seq <- seq(from = start_date, to = end_date, by = 60*60*24)
      df <- data.frame(date = d_seq,
                       location = rep(unique(tmp$location), length(d_seq)),
                       new_cases = rep(NA, length(d_seq)),
                       new_deaths = rep(NA, length(d_seq)),
                       total_cases = rep(NA, length(d_seq)),
                       total_deaths = rep(NA, length(d_seq)))
      m <- match(tmp$date, df$date)
      df$new_cases[m] <- tmp$new_cases
      df$new_deaths[m] <- tmp$new_deaths
      df$total_cases[m] <- tmp$total_cases
      df$total_deaths[m] <- tmp$total_deaths
      df[is.na(df$new_cases),]
      for(i in 1:nrow(df)){
        if(is.na(df$new_cases[i])){
          df$new_cases[i] <- df$new_cases[i-1]
          df$new_deaths[i] <- df$new_deaths[i-1]
          df$total_cases[i] <- df$total_cases[i-1]
          df$total_deaths[i] <- df$total_deaths[i-1]
        }
      }
      corona_update <- rbind(corona_update, df)
    }
    else
      corona_update <- rbind(corona_update, tmp)
  }
  corona_update
}
pkuhnert/mapcorona documentation built on March 30, 2020, 12:49 a.m.