R/SummaryWeather.R

Defines functions summary_ENV_weather

summary_ENV_weather <- function(df.get_weather,env){

  names(df.get_weather)[1] <- 'env'
  ids_ <- c('env','LON','LAT','YEAR','MM','DD','DOY','YYYYMMDD',"daysFromStart")
  ids_ <- names(df.get_weather)%in% ids_
  df.get_weather[,!ids_][df.get_weather[,!ids_] == '-99'] <- NA

  ids_ <- c('LON','LAT','YEAR','MM','DD','DOY','YYYYMMDD',"daysFromStart")
  ids_ <- !names(df.get_weather) %in% c(ids_)
  ts <- melt(df.get_weather[,ids_],id.vars = 'env')
  ts$value <- as.numeric(ts$value)
  
  avg_.<-dcast(ddply(ts,.(env,variable),summarise,avg=mean(value,na.rm=T)),env~variable,value.var = 'avg')
  sum_.<-dcast(ddply(ts,.(env,variable),summarise,sum=sum(value,na.rm=T)),env~variable,value.var = 'sum')
  med_.<-dcast(ddply(ts,.(env,variable),summarise,med=median(value,na.rm=T)),env~variable,value.var = 'med')
  max_.<-dcast(ddply(ts,.(env,variable),summarise,max=max(value,na.rm=T)),env~variable,value.var = 'max')
  min_.<-dcast(ddply(ts,.(env,variable),summarise,min=min(value,na.rm=T)),env~variable,value.var = 'min')
  
  W.<-ldply(list(avg=avg_., sum = sum_.,med = med_., max = max_., min=min_.),.id = "statistics")
  ids_ <- c("env",'LON','LAT','YEAR','MM','DD','DOY','YYYYMMDD',"daysFromStart",'stage',"statistics")
  W.<-acast(melt(W.,id.vars = ids_[ids_ %in% names(W.)]),statistics+variable~env,value.var='value')
  return(W.)
}


summary_ENVSTG_weather <- function(df.get_weather,env){
  
  names(df.get_weather)[1] <- 'env'
  ids_ <- c('env','stage','LON','LAT','YEAR','MM','DD','DOY','YYYYMMDD',"daysFromStart")
  ids_ <- names(df.get_weather)%in% ids_
  df.get_weather[,!ids_][df.get_weather[,!ids_] == '-99'] <- NA
  
  ids_ <- c('LON','LAT','YEAR','MM','DD','DOY','YYYYMMDD',"daysFromStart")
  ids_ <- !names(df.get_weather) %in% c(ids_)
  ts <- melt(df.get_weather[,ids_],id.vars = c('env','stage'))
  ts$value <- as.numeric(ts$value)
  
  avg_.<-dcast(ddply(ts,.(env,stage,variable),summarise,avg=mean(value,na.rm=T)),env+stage~variable,value.var = 'avg')
  sum_.<-dcast(ddply(ts,.(env,stage,variable),summarise,sum=sum(value,na.rm=T)),env+stage~variable,value.var = 'sum')
  med_.<-dcast(ddply(ts,.(env,stage,variable),summarise,med=median(value,na.rm=T)),env+stage~variable,value.var = 'med')
  max_.<-dcast(ddply(ts,.(env,stage,variable),summarise,max=max(value,na.rm=T)),env+stage~variable,value.var = 'max')
  min_.<-dcast(ddply(ts,.(env,stage,variable),summarise,min=min(value,na.rm=T)),env+stage~variable,value.var = 'min')
  
  W.<-ldply(list(avg=avg_., sum = sum_.,med = med_., max = max_., min=min_.),.id = "statistics")
  ids_ <- c("env",'LON','LAT','YEAR','MM','DD','DOY','YYYYMMDD',"daysFromStart",'stage',"statistics")
  W.<-acast(melt(W.,id.vars = ids_[ids_ %in% names(W.)]),statistics+variable+stage~env,value.var='value')
  return(W.)
}

summary_get_weather <- function(df.get_weather,
                                env,
                                by.stage = TRUE,
                                stage = NULL,
                                breaks = NULL,
                                name.stages = NULL){
  if(!isTRUE(by.stage)){
    W<-summary_ENV_weather(df.get_weather=df.get_weather,env = env)
    return(W)
  }
  if(isTRUE(by.stage)){
    df.get_weather$stage <- stage.by.dae(.dae = df.get_weather$daysFromStart,
                                        .breaks = breaks,.names = name.stages)
    W <-summary_ENVSTG_weather(df.get_weather=df.get_weather,env = env)
    return(W)
  }
  
}


stage.by.dae = function(.dae=NULL, .breaks=NULL, .names=NULL){
  if(is.null(.dae)){stop(".dae is missing")}
  if(is.null(.breaks)){.breaks<-seq(from=1-min(.dae),to=max(.dae)+10,by=10)}
  if(is.null(.names)){.names <-paste0("stage_",.breaks)}
  pstage = cut(x = .dae,breaks=.breaks,right = F)
  levels(pstage) = .names
  return(pstage)
}
gcostaneto/envirotype documentation built on Feb. 19, 2020, 10:36 p.m.