diff --git a/DESCRIPTION b/DESCRIPTION
index 55008ba3..b6546527 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,6 +1,6 @@
Package: AMR
-Version: 1.8.2.9051
-Date: 2022-11-14
+Version: 1.8.2.9052
+Date: 2022-11-17
Title: Antimicrobial Resistance Data Analysis
Description: Functions to simplify and standardise antimicrobial resistance (AMR)
data analysis and to work with microbial and antimicrobial properties by
diff --git a/NEWS.md b/NEWS.md
index bc251510..20b07483 100755
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,4 +1,4 @@
-# AMR 1.8.2.9051
+# AMR 1.8.2.9052
This version will eventually become v2.0! We're happy to reach a new major milestone soon!
diff --git a/R/mo.R b/R/mo.R
index daaf67d1..7c1b851c 100755
--- a/R/mo.R
+++ b/R/mo.R
@@ -180,6 +180,10 @@ as.mo <- function(x,
x <- replace_ignore_pattern(x, ignore_pattern)
x_lower <- tolower(x)
+
+ if (any(trimws2(x_lower) %like_case% "complex$", na.rm = TRUE)) {
+ warning_("in `as.mo()`: translation of complexes is not supported at the moment - the input text 'complex' was ignored.", call = FALSE)
+ }
# WHONET: xxx = no growth
x[x_lower %in% c("", "xxx", "na", "nan")] <- NA_character_
@@ -521,7 +525,7 @@ mo_cleaning_regex <- function() {
"|",
"([({]|\\[).+([})]|\\])",
"|",
- "(^| )(e?spp|e?ssp|e?ss|e?sp|e?subsp|sube?species|biovar|biotype|serovar|e?species)[.]*( |$))"
+ "(^| )(e?spp|e?ssp|e?ss|e?sp|e?subsp|sube?species|biovar|biotype|serovar|serogr.?up|e?species|complex)[.]*( |$))"
)
}
diff --git a/R/rsi.R b/R/rsi.R
index c8ca6588..7b98a3b0 100755
--- a/R/rsi.R
+++ b/R/rsi.R
@@ -285,7 +285,7 @@ as.rsi.default <- function(x, ...) {
x.bak <- x
x <- as.character(x) # this is needed to prevent the vctrs pkg from throwing an error
-
+
if (inherits(x.bak, c("integer", "numeric", "double")) && all(x %in% c(1:3, NA))) {
# support haven package for importing e.g., from SPSS - it adds the 'labels' attribute
lbls <- attributes(x.bak)$labels
@@ -298,6 +298,10 @@ as.rsi.default <- function(x, ...) {
x[x.bak == 2] <- "I"
x[x.bak == 3] <- "R"
}
+ } else if (inherits(x.bak, "character") && all(x %in% c("1", "2", "3", "S", "I", "R", NA_character_))) {
+ x[x.bak == "1"] <- "S"
+ x[x.bak == "2"] <- "I"
+ x[x.bak == "3"] <- "R"
} else if (!all(is.na(x)) && !identical(levels(x), c("R", "S", "I")) && !all(x %in% c("R", "S", "I", NA))) {
if (all(x %unlike% "(R|S|I)", na.rm = TRUE)) {
# check if they are actually MICs or disks
@@ -312,6 +316,7 @@ as.rsi.default <- function(x, ...) {
x <- trimws2(as.character(unlist(x)))
x[x %in% c(NA, "", "-", "NULL")] <- NA_character_
x.bak <- x
+
na_before <- length(x[is.na(x)])
# correct for translations
diff --git a/README.md b/README.md
index 22667bef..c28e9582 100755
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# `AMR` (for R)
-
+
----
diff --git a/inst/tinytest/test-mo.R b/inst/tinytest/test-mo.R
index 66ca08a9..8cd2e83f 100644
--- a/inst/tinytest/test-mo.R
+++ b/inst/tinytest/test-mo.R
@@ -80,6 +80,8 @@ expect_equal(as.character(as.mo("streptococcus milleri")), "B_STRPT_MILL")
expect_equal(as.character(as.mo(c("Gram negative", "Gram positive"))), c("B_GRAMN", "B_GRAMP"))
+expect_warning(as.mo("Acinetobacter calcoaceticus/baumannii complex"))
+
# prevalent MO
expect_identical(
suppressWarnings(as.character(
diff --git a/inst/tinytest/test-rsi.R b/inst/tinytest/test-rsi.R
index 6467c6aa..0a8c3f8e 100644
--- a/inst/tinytest/test-rsi.R
+++ b/inst/tinytest/test-rsi.R
@@ -81,6 +81,12 @@ if (AMR:::pkg_is_available("dplyr", min_version = "1.0.0")) {
expect_equal(sum(is.rsi(example_isolates)), 40)
expect_stdout(print(tibble(ab = as.rsi("S"))))
+
+ expect_true(example_isolates %>%
+ select(AMC, MEM) %>%
+ mutate(MEM = as.rsi(ifelse(AMC == "S", "S", MEM))) %>%
+ pull(MEM) %>%
+ is.rsi())
}
if (AMR:::pkg_is_available("skimr", min_version = "2.0.0")) {
expect_inherits(