Skip to content

Commit

Permalink
v2.1.0.9001
Browse files Browse the repository at this point in the history
* refactor: Update rules for SMALL2 and SMALL3
    + Sort ascending
    + Add rules for SMALL2A and SMALL2B
  • Loading branch information
leppott committed Jun 7, 2024
1 parent 6084d10 commit 57a661c
Show file tree
Hide file tree
Showing 6 changed files with 88 additions and 24 deletions.
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Package: BCGcalc
Type: Package
Title: Biological Condition Gradient, calculator
Version: 2.1.0.9000
Version: 2.1.0.9001
Authors@R: c(
person("Erik W.", "Leppo", email="Erik.Leppo@tetratech.com", role=c("aut","cre")),
person("Jen", "Stamp", email="Jen.Stamp@tetratech.com", role="ctb"),
Expand Down
14 changes: 10 additions & 4 deletions NEWS
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
BCGcalc-NEWS
================
<Erik.Leppo@tetratech.com>
2024-06-06 14:55:21.483777
2024-06-07 09:25:05.421203

<!-- NEWS.md is generated from NEWS.Rmd. Please edit that file -->

#> Last Update: 2024-06-06 14:55:21.497817
#> Last Update: 2024-06-07 09:25:05.434199

# BCGcalc 2.1.0.9000 (2024-05-14)
# BCGcalc 2.1.0.9001 (2024-06-07)

- break: Fix Rules for Small2 and Small3
- refactor: Update rules for SMALL2 and SMALL3
- Sort ascending
- Add rules for SMALL2A and SMALL2B

# BCGcalc 2.1.0.9000 (2024-06-06)

- break: Fix Rules for SMALL2 and SMALL3
- Sort descending and take row 2 or 3
- This could be a breaking change
- Updating version number
Expand Down
14 changes: 10 additions & 4 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
BCGcalc-NEWS
================
<Erik.Leppo@tetratech.com>
2024-06-06 14:55:21.483777
2024-06-07 09:25:05.421203

<!-- NEWS.md is generated from NEWS.Rmd. Please edit that file -->

#> Last Update: 2024-06-06 14:55:21.497817
#> Last Update: 2024-06-07 09:25:05.434199

# BCGcalc 2.1.0.9000 (2024-05-14)
# BCGcalc 2.1.0.9001 (2024-06-07)

- break: Fix Rules for Small2 and Small3
- refactor: Update rules for SMALL2 and SMALL3
- Sort ascending
- Add rules for SMALL2A and SMALL2B

# BCGcalc 2.1.0.9000 (2024-06-06)

- break: Fix Rules for SMALL2 and SMALL3
- Sort descending and take row 2 or 3
- This could be a breaking change
- Updating version number
Expand Down
10 changes: 8 additions & 2 deletions NEWS.rmd
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,15 @@ knitr::opts_chunk$set(
cat(paste0("Last Update: ",Sys.time()))
```

# BCGcalc 2.1.0.9000 (2024-05-14)
# BCGcalc 2.1.0.9001 (2024-06-07)

* break: Fix Rules for Small2 and Small3
* refactor: Update rules for SMALL2 and SMALL3
+ Sort ascending
+ Add rules for SMALL2A and SMALL2B

# BCGcalc 2.1.0.9000 (2024-06-06)

* break: Fix Rules for SMALL2 and SMALL3
+ Sort descending and take row 2 or 3
+ This could be a breaking change
- Updating version number
Expand Down
65 changes: 53 additions & 12 deletions R/BCG.Level.Membership.R
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,18 @@
#' For the Pacific Northwest some metrics were grouped and the 2nd of 3 values
#' is used and the other 2 values tossed when determining level membership.
#' This equates to using the median of the 3 values. This is handled by
#' including "MEDIAN" in the Exc_Rule column in Rules.xlsx.
#' including "MEDIAN" in the Exc_Rule column in Rules.xlsx. Superceded by
#' "SMALL2".
#'
#' 2024 added SMALL2 and SMALL3 Exception rules.
#' For New Mexico BCG some metrics are grouped so use the 2nd or 3rd smallest
#' value instead of the minimum. As above, this is handled by including
#' "SMALL2" or "SMALL3" in the Exc_Rule column in Rules.xlsx.
#'
#' Some Great Plains rules use multiple groupings of SMALL2. These are coded as
#' "SMALL2A" and "SMALL2B". If additional groupings are needed the code needs
#' to be tweaked.
#'
#' Deprecated col_SITE_TYPE for col_INDEX_CLASS in v2.0.0.9001.
#' @md
#'
Expand Down Expand Up @@ -324,14 +329,14 @@ BCG.Level.Membership <- function(df.metric.membership

# dplyr fix 1 ----
# Ensure have correct names for summarise(group_by))
names(df.merge)[names(df.merge) == col_SAMPLEID] <- "SAMPLEID"
names(df.merge)[names(df.merge) == col_INDEX_NAME] <- "INDEX_NAME"
names(df.merge)[names(df.merge) == col_SAMPLEID] <- "SAMPLEID"
names(df.merge)[names(df.merge) == col_INDEX_NAME] <- "INDEX_NAME"
names(df.merge)[names(df.merge) == col_INDEX_CLASS] <- "INDEX_CLASS"
names(df.merge)[names(df.merge) == col_LEVEL] <- "LEVEL"
names(df.merge)[names(df.merge) == col_RULE_TYPE] <- "RULE_TYPE"
names(df.merge)[names(df.merge) == col_MEMBERSHIP] <- "MEMBERSHIP"
names(df.merge)[names(df.merge) == col_LEVEL] <- "LEVEL"
names(df.merge)[names(df.merge) == col_RULE_TYPE] <- "RULE_TYPE"
names(df.merge)[names(df.merge) == col_MEMBERSHIP] <- "MEMBERSHIP"
## Exceptions
names(df.merge)[names(df.merge) == col_EXC_RULE] <- "EXC_RULE"
names(df.merge)[names(df.merge) == col_EXC_RULE] <- "EXC_RULE"


# EXCEPTIONS ----
Expand Down Expand Up @@ -368,15 +373,14 @@ BCG.Level.Membership <- function(df.metric.membership
## EXC_RULE, SMALL2----
df_er_small2 <- dplyr::filter(df.merge, EXC_RULE == "SMALL2")
# default sort in arrange is ascending (NA are at end)
# sort desc so doesn't matter how many are in group
# group
# filter for 2nd row
df_er_small2_calc <- dplyr::group_by(df_er_small2
, SAMPLEID
, INDEX_NAME
, INDEX_CLASS
, LEVEL) %>%
dplyr::arrange(-MEMBERSHIP) %>% # sort desc
dplyr::arrange(MEMBERSHIP) %>% # sort asc
dplyr::filter(dplyr::row_number() == 2)
#
# Update df.merge
Expand All @@ -385,6 +389,44 @@ BCG.Level.Membership <- function(df.metric.membership
# Add new memberships back to df.merge
df.merge <- dplyr::bind_rows(df.merge, df_er_small2_calc)

## EXC_RULE, SMALL2A----
df_er_small2a <- dplyr::filter(df.merge, EXC_RULE == "SMALL2A")
# default sort in arrange is ascending (NA are at end)
# group
# filter for 2nd row
df_er_small2a_calc <- dplyr::group_by(df_er_small2a
, SAMPLEID
, INDEX_NAME
, INDEX_CLASS
, LEVEL) %>%
dplyr::arrange(MEMBERSHIP) %>% # sort asc
dplyr::filter(dplyr::row_number() == 2)
#
# Update df.merge
# Remove EXC_RULE == "SMALL2"
df.merge <- dplyr::filter(df.merge, EXC_RULE != "SMALL2A" | is.na(EXC_RULE))
# Add new memberships back to df.merge
df.merge <- dplyr::bind_rows(df.merge, df_er_small2a_calc)

## EXC_RULE, SMALL2B----
df_er_small2b <- dplyr::filter(df.merge, EXC_RULE == "SMALL2B")
# default sort in arrange is ascending (NA are at end)
# group
# filter for 2nd row
df_er_small2b_calc <- dplyr::group_by(df_er_small2b
, SAMPLEID
, INDEX_NAME
, INDEX_CLASS
, LEVEL) %>%
dplyr::arrange(MEMBERSHIP) %>% # sort asc
dplyr::filter(dplyr::row_number() == 2)
#
# Update df.merge
# Remove EXC_RULE == "SMALL2"
df.merge <- dplyr::filter(df.merge, EXC_RULE != "SMALL2B" | is.na(EXC_RULE))
# Add new memberships back to df.merge
df.merge <- dplyr::bind_rows(df.merge, df_er_small2b_calc)

## EXC_RULE, SMALL3----
# Need to handle Rule01 (max) [part of Small3 not a separate rule]
df_er_small3_rule0 <- dplyr::filter(df.merge
Expand All @@ -402,23 +444,22 @@ BCG.Level.Membership <- function(df.metric.membership
, INDEX_NAME
, INDEX_CLASS
, LEVEL) %>%
dplyr::arrange(-MEMBERSHIP) %>% # desc
dplyr::arrange(MEMBERSHIP) %>% # sort asc
dplyr::filter(dplyr::row_number() == 3) %>%
dplyr::mutate(RULE_TYPE = "RULE0")
# Add Rule1 max to Rule0
df_er_small3_rule0_calc <- dplyr::bind_rows(df_er_small3_rule0
, df_er_small3_rule1_calc)
# Small3 calc
# default sort in arrange is ascending (NA are at end)
# use Desc so doesn't matter number in group
# group
# filter for 3rd row
df_er_small3_calc <- dplyr::group_by(df_er_small3_rule0_calc
, SAMPLEID
, INDEX_NAME
, INDEX_CLASS
, LEVEL) %>%
dplyr::arrange(-MEMBERSHIP) %>% # desc
dplyr::arrange(MEMBERSHIP) %>% # sort asc
dplyr::filter(dplyr::row_number() == 3)
#
# Update df.merge
Expand Down
7 changes: 6 additions & 1 deletion man/BCG.Level.Membership.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 57a661c

Please sign in to comment.