An error occurred while loading the file. Please try again.
-
Heraut Louis authoredf917951c
# Usefull library
library(dplyr)
library(zoo)
library(StatsAnalysisTrend)
# Sourcing R file
source('processing/format.R')
# Compute the time gap by station
get_lacune = function (df_data, df_info) {
# Get all different stations code
Code = levels(factor(df_info$code))
# Create new vector to stock results for cumulative time gap by station
tLac = c()
# Create new vector to stock results for mean time gap by station
meanLac = c()
# Get rows where there is no NA
NoNA = complete.cases(df_data)
# Get data where there is no NA
df_data_NoNA = df_data[NoNA,]
# For every station
for (code in Code) {
# Get only the data rows for the selected station
df_data_code = df_data[df_data$code==code,]
# Get date for the selected station
Date = df_data_code$Date
# Get time span for the selection station
span = as.numeric(Date[length(Date)] - Date[1])
# Get only the data rows with no NA for the selected station
df_data_NoNA_code = df_data_NoNA[df_data_NoNA$code==code,]
# Get date for the selected station
Date_NoNA = df_data_NoNA_code$Date
# Compute the time gap
lac = as.numeric(diff(Date_NoNA) - 1)
# Compute the cumulative gap
lac_sum = sum(lac)
# Store the cumulative gap rate
tLac = c(tLac, lac_sum/span)
# Compute the mean gap
lac_mean = mean(lac[lac != 0])
# Store the mean gap
meanLac = c(meanLac, lac_mean)
}
# Compute the cumulative gap rate in pourcent
tLac100 = tLac * 100
# Create a tibble
df_lac = tibble(code=Code, tLac100=tLac100, meanLac=meanLac)
return (df_lac)
}
get_intercept = function (df_Xtrend, df_Xlist, unit2day=365.25) {
intercept = c()
# Group = levels(factor())
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
for (g in df_Xlist$info$group) {
df_data_code = df_Xlist$data[df_Xlist$data$group == g,]
trend = df_Xtrend$trend[df_Xtrend$group == g]
mu_X = mean(df_data_code$Qm3s, na.rm=TRUE)
mu_t = as.numeric(mean(df_data_code$Date,
na.rm=TRUE))/unit2day
b = mu_X - mu_t * trend
intercept = append(intercept, b)
}
return (intercept)
}
get_QAtrend = function (df_data, period) {
# AVERAGE ANNUAL FLOW : QA #
### /!\ verify order conservation ###
df_QAlist = prepare(df_data, colnamegroup=c('code'))
df_QAEx = extract.Var(data.station=df_QAlist,
funct=mean,
timestep='year',
period=period,
pos.datetime=1,
na.rm=TRUE)
df_QAtrend = Estimate.stats(data.extract=df_QAEx)
res_QAtrend = clean(df_QAtrend, df_QAEx, df_QAlist)
return (res_QAtrend)
}
get_QMNAtrend = function (df_data, period) {
# MONTHLY MINIMUM FLOW IN THE YEAR : QMNA #
df_QMNAlist = prepare(df_data, colnamegroup=c('code'))
### /!\ PLUS RAPIDE ###
# fMNA = function (X) {
# # prendre un paquet de 1 ans et faire la moyenne par mois et retourner le minimum des debit
# dpm = length(X)/12
# # print(dpm)
# # print(length(X))
# monthmean = c()
# for (i in 1:12) {
# id = round(dpm*(i-1)+1, 0)
# iu = round(i*dpm, 0)
# monthmean = append(monthmean, mean(X[id:iu], na.rm=TRUE))
# # print(paste('start', id))
# # print(paste('end', iu))
# # print('')
# }
# # print(monthmean)
# return (min(monthmean, na.rm=TRUE))
# }
# df_QMNAEx = extract.Var(data.station=df_QMNAlist,
# funct=fMNA,
# period=period,
# pos.datetime=1)#,
# na.rm=TRUE) ### /!\ PAS COMPRIS ###
df_QMNAEx = extract.Var(data.station=df_QMNAlist,
funct=mean,
period=period,
timestep='month',
pos.datetime=1,
na.rm=TRUE)
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
### /!\ NOM DE COLONNE PAS CONSERVER ###
df_QMNAlist = reprepare(df_QMNAEx, df_QMNAlist, colnamegroup=c('code'))
df_QMNAEx = extract.Var(data.station=df_QMNAlist,
funct=min,
period=period,
timestep='year',
pos.datetime=1,
na.rm=TRUE)
df_QMNAtrend = Estimate.stats(data.extract=df_QMNAEx)
res_QMNAtrend = clean(df_QMNAtrend, df_QMNAEx, df_QMNAlist)
return (res_QMNAtrend)
}
get_VCN10trend = function (df_data, df_meta, period) {
# MINIMUM 10 DAY AVERAGE FLOW OVER THE YEAR : VCN10 #
# Get all different stations code
Code = levels(factor(df_meta$code))
df_data_roll = tibble()
for (c in Code) {
df_data_code = df_data[df_data$code == c,]
df_data_code = tibble(Date=rollmean(df_data_code$Date,
10,
fill=NA),
Qm3s=rollmean(df_data_code$Qm3s,
10,
fill=NA),
code=c)
df_data_roll = bind_rows(df_data_roll, df_data_code)
}
df_VCN10list = prepare(df_data_roll, colnamegroup=c('code'))
df_VCN10Ex = extract.Var(data.station=df_VCN10list,
funct=min,
period=period,
timestep='year',
pos.datetime=1,
na.rm=TRUE)
df_VCN10trend = Estimate.stats(data.extract=df_VCN10Ex)
res_VCN10trend = clean(df_VCN10trend, df_VCN10Ex, df_VCN10list)
return (res_VCN10trend)
}