R/ideam2annual.R

Defines functions ideam2annual ideam2annual

Documented in ideam2annual

#' function for calculate monthly values of prepared data from DHIME (IDEAM, Colombia)
#'
#' function for calculate monthly values of prepared data from DHIME (IDEAM, Colombia),
#' apply to precipitation, minimum and maximum temperature.
#' @param x dataframe of prepared data of a station from DHIME (IDEAM, Colombia)
#' @param param default value is sum, sum is for precipitation and evaporation, mean for temperature and relative humidity, max for maximum values.
#' @param na.rm default value is TRUE, TRUE for consider NA, FALSE for not consider NA.
#' @import stats
#' @export
#'
#' @author Geomar Perales Apaico
#'
#' @examples
#' data <- ideamprep(Bucaramanga)
#' ideam2annual(data)
#'
#' @name ideam2annual

ideam2annual <-function(x, ...) UseMethod("ideam2annual")

ideam2annual <- function(x, param = NULL, na.rm = TRUE){

  colnames(data) <- c("date", "values")
  x <- data.frame(x, stringsAsFactors = FALSE)
  if(is.null(x)){
    stop("values not recognized")
  }

  if(is.null(param)){
    opt = "sum"
  } else if(param == "sum"){
    opt = "sum"
  } else if(param == "mean"){
    opt = "mean"
  } else if(param == "max"){
    opt = "max"
  } else if(is.na(match(param, c("sum","mean")))){
    stop("parameter not recognized")
  } else{
    stop("parameter not recognized")
  }

  date = strftime(x$date, "%Y")

  if(isTRUE(na.rm)){
    x$values <- ifelse(is.na(x$values), 0, x$values)
    annual.sum <- aggregate(as.numeric(as.vector(x$values)), by = list(date), FUN = opt)
    annual.sum <- data.frame(annual.sum, stringsAsFactors = FALSE)
    colnames(annual.sum) <- c("date","values")

    ini.yr <- as.Date(paste0(min(as.character(annual.sum$date)), "-01-01"))
    end.yr <- as.Date(paste0(max(as.character(annual.sum$date)), "-12-01"))
    annual.sum$date <- data.frame(date = seq.Date(ini.yr, end.yr, by = "year"))

    return(annual.sum)

  } else if(!isTRUE(na.rm)){
    annual.sum <- aggregate(as.numeric(as.vector(x$values)), by = list(date), FUN = opt)
    colnames(annual.sum) <- c("date","values")

    ini.yr <- as.Date(paste0(min(as.character(annual.sum$date)), "-01-01"))
    end.yr <- as.Date(paste0(max(as.character(annual.sum$date)), "-12-01"))
    annual.sum[,1] <- data.frame(date = seq.Date(ini.yr, end.yr, by = "year"))

    return(annual.sum)
  }
}

#' @rdname ideam2annual
GeomarPerales/ideamR documentation built on Dec. 17, 2021, 9:31 p.m.