55# ' @param dataFrame Data frame with time in first column and parameter
66# ' values per site. If no reference data frame is provided it must include
77# ' the reference_vector as column.
8- # ' @param reference Column name of the reference in dataFrame or a seperate
9- # ' data frame that contains the same column names as dataFrame
8+ # ' @param reference The reference can either be
9+ # ' * A reference within dataFrame -> column name as character
10+ # ' * A reference vector valid for all sites -> reference numeric vector of length
11+ # ' equal to the number of rows of dataFrame
12+ # ' * individual reference for each site -> a reference data frame with the same
13+ # ' shape and column names as dataFrame (posixDateTime column does not matter)
1014# ' @param worst A numerical value which is the worst case
1115# ' @param good_values Character, either "high" or "low" defining what would be
1216# ' best
@@ -45,24 +49,24 @@ adverse_deviation_from_reference <- function(
4549 sites <- colnames(d )
4650
4751 if (is.character(reference )){
48- reference_vector <- dataFrame [,reference ]
49-
52+ reference <- dataFrame [,reference ]
53+ }
54+ if (is.vector(reference )){
5055 v <- apply(d , 2 , function (data_vector ){
5156 if (good_values == " high" ){
52- deviation_amount <- (data_vector - worst ) / (reference_vector - worst )
57+ deviation_amount <- (data_vector - worst ) / (reference - worst )
5358 # Adverse if data is lower than reference and reference is higher than worst
5459 adverse_deviation <-
55- data_vector < reference_vector & reference_vector > worst
60+ data_vector < reference & reference > worst
5661 } else if (good_values == " low" ){
57- deviation_amount <- 1 - (data_vector - worst ) / (reference_vector - worst )
62+ deviation_amount <- 1 - (data_vector - worst ) / (reference - worst )
5863 # Adverse if data is higher than reference and reference is lower than worst
5964 adverse_deviation <-
60- data_vector > reference_vector & reference_vector < worst
65+ data_vector > reference & reference < worst
6166 }
6267 round(sum(deviation_amount [adverse_deviation ]) * t_step , digits = 3 )
6368 })
64-
65- } else {
69+ } else if (is.data.frame(reference )){
6670 v <- apply(sites , 2 , function (site ){
6771 data_vector <- d [,site ]
6872 reference_vector <- reference [,site ]
@@ -80,5 +84,10 @@ adverse_deviation_from_reference <- function(
8084 round(sum(deviation_amount [adverse_deviation ]) * t_step , digits = 3 )
8185 })
8286 }
83- data.frame (" adverse_dev" = v )
87+ df_out <- data.frame (" adverse_dev" = v )
88+ df_out <- qsimVis :: add_site_info(
89+ df_in = df_out ,
90+ v_qsim_ids = rownames(df_out )
91+ )
92+ df_out
8493}
0 commit comments