From df4d3ee3585facbefa7edaf98f3eff801612ff57 Mon Sep 17 00:00:00 2001 From: "louis.heraut" <louis.heraut@inrae.fr> Date: Fri, 21 Jan 2022 17:40:09 +0100 Subject: [PATCH] INI variable --- processing/analyse.R | 29 ++++++++++++++----------- processing/format.R | 51 +++++++++++++++++++++++++++----------------- 2 files changed, 48 insertions(+), 32 deletions(-) diff --git a/processing/analyse.R b/processing/analyse.R index 53691f0..6c42952 100644 --- a/processing/analyse.R +++ b/processing/analyse.R @@ -275,7 +275,7 @@ get_VCN10trend = function (df_data, df_meta, period, p_thresold) { ### 1.4. tINI date which_underfirst = function (L, UpLim) { - id = which(L < UpLim)[1] + id = which(L <= UpLim)[1] return (id) } @@ -321,6 +321,9 @@ get_tINItrend = function (df_data, df_meta, period, p_thresold) { # Gets the code code = Code[k] + per.start = df_meta$start_year[df_meta$code == code] + per.start = paste(sprintf("%02d", per.start), '-01', sep='') + # Get the data associated to the code df_data_roll_code = df_data_roll[df_data_roll$code == code,] @@ -337,25 +340,22 @@ get_tINItrend = function (df_data, df_meta, period, p_thresold) { funct=min, timestep='year', period=per, + per.start=per.start, pos.datetime=1, na.rm=TRUE) - print(code) + # print(code) + # print(df_QNAEx_code) - print(df_QNAEx_code) QNAmax = max(df_QNAEx_code$values, na.rm=TRUE) - print(QNAmax) + + # print(QNAmax) + # print(per.start) # Prepare the data to fit the entry of extract.Var df_tINIlist_code = prepare(df_data_roll_code, colnamegroup=c('code')) - - per.start = df_meta$start_year[df_meta$code == code] - per.start = paste(sprintf("%02d", per.start), '-01', sep='') - - - print(per.start) # Compute the yearly min over the averaged data df_tINIEx_code = extract.Var(data.station=df_tINIlist_code, @@ -369,6 +369,11 @@ get_tINItrend = function (df_data, df_meta, period, p_thresold) { df_tINIEx_code$group1 = k df_tINIlist_code$data$group = k df_tINIlist_code$info$group = k + + # Converts index of the tINI to the julian date associated + df_tINIEx_code = prepare_date(df_tINIEx_code, + df_tINIlist_code, + per.start=per.start) # Store the results df_tINIEx = bind_rows(df_tINIEx, df_tINIEx_code) @@ -382,9 +387,7 @@ get_tINItrend = function (df_data, df_meta, period, p_thresold) { # print(df_tINIEx) # print(df_tINIlist) - - # Converts index of the tINI to the julian date associated - df_tINIEx = prepare_date(df_tINIEx, df_tINIlist) + # Compute the trend analysis df_tINItrend = Estimate.stats(data.extract=df_tINIEx, diff --git a/processing/format.R b/processing/format.R index a7a03db..84c928f 100644 --- a/processing/format.R +++ b/processing/format.R @@ -110,46 +110,59 @@ reprepare = function(df_XEx, df_Xlist, colnamegroup=NULL) { -prepare_date = function(df_XEx, df_Xlist) { +prepare_date = function(df_XEx, df_Xlist, per.start="01-01") { - dateStart_group = summarise(group_by(df_Xlist$data, group), + df_dateStart = summarise(group_by(df_Xlist$data, group), Date = min(Date)) # filter(group_by(df_Xlist$data, group), Date == min(Date)) - dateStart_group$Date_julian = NA - date = as.Date(dateStart_group$Date) - origin = as.Date(paste(format(dateStart_group$Date, "%Y"), - '-01-01', sep='')) + df_dateStart$Date_julian = NA + df_dateStart$DateHydro_julian = NA - for (i in 1:nrow(dateStart_group)) { + date = as.Date(df_dateStart$Date) + + date_per.start = as.Date(paste(substr(date, 1, 4), + '-', per.start, sep='')) + + date[date < date_per.start] = date_per.start[date < date_per.start] + df_dateStart$Date = date + + origin = as.Date(paste(format(df_dateStart$Date, "%Y"), + '-', per.start, sep='')) + + originHydro = as.Date(paste(format(df_dateStart$Date, "%Y"), + '-01-01', sep='')) + + for (i in 1:nrow(df_dateStart)) { dateJultmp = julian(date[i], origin=origin[i]) - dateStart_group$Date_julian[i] = dateJultmp + df_dateStart$Date_julian[i] = dateJultmp + dateJulHydrotmp = julian(date[i], origin=originHydro[i]) + df_dateStart$DateHydro_julian[i] = dateJulHydrotmp } - dateStart_group$Year = format(dateStart_group$Date, "%Y") + df_dateStart$Year = format(df_dateStart$Date, "%Y") - for (group in dateStart_group$group) { - OkdateStart_group = dateStart_group$group == group - Shift = dateStart_group$Date_julian[OkdateStart_group] - year = dateStart_group$Year[OkdateStart_group] + for (group in df_dateStart$group) { + Ok_dateStart = df_dateStart$group == group + Shift = df_dateStart$Date_julian[Ok_dateStart] + year = df_dateStart$Year[Ok_dateStart] OkXEx_code_year = df_XEx$group1 == group & df_XEx$datetime == year df_XEx$values[OkXEx_code_year] = df_XEx$values[OkXEx_code_year] + Shift - OkXEx_code = df_XEx$group1 == group - XEx_code = df_XEx$values[OkXEx_code] + OkXEx_code = df_XEx$group1 == group + + ShiftHydro = df_dateStart$DateHydro_julian[Ok_dateStart] + df_XEx$values[OkXEx_code] = df_XEx$values[OkXEx_code] + ShiftHydro + XEx_code = df_XEx$values[OkXEx_code] meanXEx_code = mean(XEx_code, na.rm=TRUE) dXEx_code = meanXEx_code - XEx_code stdXEx_code = sd(XEx_code, na.rm=TRUE) - OkOverStd = dXEx_code >= stdXEx_code*3 OkOverStd[is.na(OkOverStd)] = FALSE - XEx_code[OkOverStd] = XEx_code[OkOverStd] + 365 - print(OkOverStd) - # print(group) # print(df_XEx$datetime[df_XEx$group1 == group][dXEx_code >= stdXEx_code*3]) -- GitLab