diff --git a/processing/format.R b/processing/format.R index 696c8580cb61ebe49f195d126ca2f207fc477de7..e050c26dc2634676d6e09b50b4b5b58cbea828cb 100644 --- a/processing/format.R +++ b/processing/format.R @@ -33,32 +33,51 @@ join = function (df_data_BH, df_data_NV, df_info_BH, df_info_NV) { } -prepare = function(df_data, colnamegroup) { +prepare = function(df_data, colnamegroup=NULL) { colnamegroup = c(colnamegroup) - colindgroup = which(colnames(df_data) == colnamegroup) - df_data = group_by_at(df_data, colindgroup) data = tibble(Date=df_data$Date, group=group_indices(df_data), Qm3s=df_data$Qm3s) - Gkey = group_keys(df_data) + info = bind_cols(group=seq(1:nrow(Gkey)), Gkey) + return (list(data=data, info=info)) +} - # df_data = tibble(Date=df_data$Date, - # group=as.integer(factor(df_data$code)), - # Qm3s=df_data$Qm3s) - # df_info$group = as.integer(factor(df_info$code)) +reprepare = function(df_dataEx, df_list, colnamegroup=NULL) { - return (list(data=data, info=info)) + colnames(df_dataEx) = c('Date', 'group', 'Qm3s') + + df_dataEx$Date = as.character(df_dataEx$Date) + exDate = df_dataEx$Date[1] + nbt = lengths(regmatches(exDate, gregexpr('-', exDate))) + + if (nbt == 1) { + df_dataEx$Date = paste(df_dataEx$Date, '01', sep='-') + } else if (nbt == 0) { + df_dataEx$Date = paste(df_dataEx$Date, '01', '01', sep='-') + } else if (nbt != 2) { + stop('erreur of date format') + } + + df_dataEx = bind_cols(Date=as.Date(df_dataEx$Date, + format="%Y-%m-%d"), + df_dataEx[-1], + df_list$info[df_dataEx$group, + 2:ncol(df_list$info)]) + + df_listEx = prepare(df_dataEx, colnamegroup=colnamegroup) + return (df_listEx) } + clean = function (df_xTrend, df_list) { df_xTrend = bind_cols(df_xTrend, diff --git a/script.R b/script.R index 6da417bd7ad163024c92764a1bc31d315046ca68..723373c222cb142eaf7f7d4185ad9e20cd986ea0 100644 --- a/script.R +++ b/script.R @@ -150,12 +150,13 @@ df_info = df_join$info # df_lac = get_lacune(df_data, df_info) -### /!\ verify order conservation ### # 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) @@ -164,32 +165,48 @@ df_QATrend = clean(df_QATrend, df_QAlist) # MONTHLY MINIMUM FLOW IN THE YEAR : QMNA # +df_QMNAlist = prepare(df_data, colnamegroup=c('code')) -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)) -} +### /!\ 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_QMNAlist = prepare(df_data, colnamegroup=c('code')) +df_QMNAEx = extract.Var(data.station=df_QMNAlist, + funct=mean, + period=period, + timestep='month', + pos.datetime=1, + na.rm=TRUE) + +### /!\ NOM DE COLONNE PAS CONSERVER ### +df_QMNAlist = reprepare(df_QMNAEx, df_QMNAlist, colnamegroup=c('code')) df_QMNAEx = extract.Var(data.station=df_QMNAlist, - funct=fMNA, + funct=min, period=period, - pos.datetime=1)#, - # na.rm=TRUE) ### /!\ PAS COMPRIS ### + timestep='year', + pos.datetime=1, + na.rm=TRUE) df_QMNATrend = Estimate.stats(data.extract=df_QMNAEx) df_QMNATrend = clean(df_QMNATrend, df_QMNAlist)