@@ -889,8 +889,8 @@ recode_non_derived_vars <- function(
889889 interval <- default_interval
890890 }
891891
892- valid_row_index <- compare_value_based_on_interval (
893- compare_columns = data_varname ,
892+ valid_row_index <- check_interval (
893+ column = data_varname ,
894894 data = data ,
895895 left_boundary = from_values [[1 ]],
896896 right_boundary = from_values [[2 ]],
@@ -956,53 +956,43 @@ write_note <- function(note) {
956956 }
957957}
958958
959- # ' Compare Value Based On Interval
959+ # ' Check interval
960960# '
961- # ' Compare values on the scientific notation interval
961+ # ' Checks if the values are inside the scientific- notation interval
962962# '
963963# ' @param left_boundary the min value
964964# ' @param right_boundary the max value
965- # ' @param data the data that contains values being compared
966- # ' @param compare_columns The columns inside data being checked
967- # ' @param interval The scientific notation interval
965+ # ' @param data the data that contains values being checked
966+ # ' @param column The column inside data being checked
967+ # ' @param interval The scientific notation interval (without values)
968968# '
969- # ' @return a boolean vector containing true for rows where the
970- # ' comparison is true
969+ # ' @return a logical vector with the comparison result
971970# ' @keywords internal
972- compare_value_based_on_interval <-
973- function (left_boundary ,
974- right_boundary ,
975- data ,
976- compare_columns ,
977- interval ) {
978- valid_row_index <- vector()
979- # In case of strings this handles it the suppress warnings is to get rid of the warning when string is checked as numeric
971+ check_interval <-
972+ function (left_boundary , right_boundary , data , column , interval ) {
973+
974+ # if the boundary is not a number, then just do a direct intersection
980975 if (suppressWarnings(is.na(as.numeric(left_boundary )))) {
981- valid_row_index <-
982- data [[compare_columns ]] %in% data [[compare_columns ]][which(left_boundary == data [[compare_columns ]])]
983- } else {
984- if (interval == " [,]" ) {
985- valid_row_index <-
986- data [[compare_columns ]] %in% data [[compare_columns ]][which(as.numeric(left_boundary ) < = as.numeric(data [[compare_columns ]]) &
987- as.numeric(data [[compare_columns ]]) < = as.numeric(right_boundary ))]
988- } else if (interval == " [,)" ) {
989- valid_row_index <-
990- data [[compare_columns ]] %in% data [[compare_columns ]][which(as.numeric(left_boundary ) < = as.numeric(data [[compare_columns ]]) &
991- as.numeric(data [[compare_columns ]]) < as.numeric(right_boundary ))]
992- } else if (interval == " (,]" ) {
993- valid_row_index <-
994- data [[compare_columns ]] %in% data [[compare_columns ]][which(as.numeric(left_boundary ) < as.numeric(data [[compare_columns ]]) &
995- as.numeric(data [[compare_columns ]]) < = as.numeric(right_boundary ))]
996- } else if (interval == " (,)" ) {
997- valid_row_index <-
998- data [[compare_columns ]] %in% data [[compare_columns ]][which(as.numeric(left_boundary ) < as.numeric(data [[compare_columns ]]) &
999- as.numeric(data [[compare_columns ]]) < as.numeric(right_boundary ))]
1000- } else {
1001- stop(" Invalid Argument was passed" )
1002- }
976+ return (data [[column ]] %in% left_boundary )
1003977 }
1004978
1005- return (valid_row_index )
979+ v <- as.numeric(data [[column ]]) # vector of numeric column values
980+ min <- as.numeric(left_boundary )
981+ max <- as.numeric(right_boundary )
982+
983+ result <- vector()
984+ if (interval == " [,]" ) {
985+ result <- min < = v & v < = max
986+ } else if (interval == " [,)" ) {
987+ result <- min < = v & v < max
988+ } else if (interval == " (,]" ) {
989+ result <- min < v & v < = max
990+ } else if (interval == " (,)" ) {
991+ result <- min < v & v < max
992+ } else {
993+ stop(" Invalid Argument was passed" )
994+ }
995+ return (result )
1006996 }
1007997
1008998# Does the following updates on the passed variable details sheet:
0 commit comments