#' Hobo Aggregate Parameters
#'
#' Calculate aggregates parameter values from a "hobo.data.frame".
#'
#' @param data An object of class "data.frame" containing a column with Dates and another with Temperatures values.
#' @param Dcol An integer indicating the column which contains Dates
#' @param Pcol An integer indicating the column wiich contains Parameter values
#' @param resolution One of \code{"day"}, \code{"month"}, \code{"week"} or \code{"year"}
#' character string which define the aggregation level..
#' @return an object of class "data.frame" containing aggregate parameters
#' @import stringr
#'
#' @author Remy Moine <remymoine95@gmail.com>
#' @export
time_agpar<-function(data,Dcol,Pcol,resolution){
if(resolution=="month"){
Ti<-unique(stringr::str_extract(data[,Dcol],"^[:digit:]{4}-[:digit:]{2}"))
Year<-stringr::str_extract(Ti,"^[:digit:]{4}")
Month<-stringr::str_extract(Ti,"[:digit:]{2}$")
Day<-rep("01",length(Ti))
Date<-unique(lubridate::as_date(
as.character(
paste(Year,Month,Day,sep="-")
)
))
} else {
if (resolution=="day"){
Ti<-unique(stringr::str_extract(data[,Dcol],"^[:digit:]{4}-[:digit:]{2}-[:digit:]{2}"))
Year<-stringr::str_extract(Ti,"^[:digit:]{4}")
Month<-stringr::str_extract(Ti,"(?<=[:digit:]{4}-)[:digit:]{2}")
Day<-lubridate::yday(as.Date(Ti))
Date<-unique(lubridate::as_date(
stringr::str_extract(data[,Dcol],"^[:digit:]{4}-[:digit:]{2}-[:digit:]{2}"))
)
} else{
if (resolution=="year"){
Ti<-unique(stringr::str_extract(data[,Dcol],"^[:digit:]{4}"))
Year<-Ti
Month<-rep("01",length(Ti))
Day<-rep("01",length(Ti))
Date<-unique(lubridate::as_date(
as.character(
paste(Year,Month,Day,sep="-")
)
))}}}
Mi<-NA
Q1<-NA
Me<-NA
Av<-NA
Q3<-NA
Ma<-NA
Su<-NA
Amp<-NA
for (i in c(1:length(Ti))){
sel<-which(as.character(stringr::str_detect(data[,Dcol],Ti[i]))==T)
Mi[i]<-summary(stats::na.omit(data[sel,Pcol]))[1]
Q1[i]<-summary(stats::na.omit(data[sel,Pcol]))[2]
Me[i]<-summary(stats::na.omit(data[sel,Pcol]))[3]
Av[i]<-summary(stats::na.omit(data[sel,Pcol]))[4]
Q3[i]<-summary(stats::na.omit(data[sel,Pcol]))[5]
Ma[i]<-summary(stats::na.omit(data[sel,Pcol]))[6]
Su[i]<-sum(stats::na.omit(data[sel,Pcol]))
Amp[i]<-Ma[i]-Mi[i]
}
objet<-data.frame(Date=as.POSIXct(Date),Year=as.integer(Year),Month=as.integer(Month),
Day=as.integer(Day),Mi,Q1,Me,Av,Q3,Ma,Su,Amp,stringsAsFactors = F)
objet
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.