Skip to contents

Determine antimicrobial resistance (AMR) of all bug-drug combinations in your data set where at least 30 (default) isolates are available per species. Use format() on the result to prettify it to a publishable/printable format, see Examples.

Usage

bug_drug_combinations(x, col_mo = NULL, FUN = mo_shortname, ...)

# S3 method for bug_drug_combinations
format(
  x,
  translate_ab = "name (ab, atc)",
  language = get_AMR_locale(),
  minimum = 30,
  combine_SI = TRUE,
  add_ab_group = TRUE,
  remove_intrinsic_resistant = FALSE,
  decimal.mark = getOption("OutDec"),
  big.mark = ifelse(decimal.mark == ",", ".", ","),
  ...
)

Arguments

x

a data set with antibiotic columns, such as amox, AMX and AMC

col_mo

column name of the names or codes of the microorganisms (see as.mo()), defaults to the first column of class mo. Values will be coerced using as.mo().

FUN

the function to call on the mo column to transform the microorganism codes, defaults to mo_shortname()

...

arguments passed on to FUN

translate_ab

a character of length 1 containing column names of the antibiotics data set

language

language of the returned text, defaults to system language (see get_AMR_locale()) and can also be set with the option AMR_locale. Use language = NULL or language = "" to prevent translation.

minimum

the minimum allowed number of available (tested) isolates. Any isolate count lower than minimum will return NA with a warning. The default number of 30 isolates is advised by the Clinical and Laboratory Standards Institute (CLSI) as best practice, see Source.

combine_SI

a logical to indicate whether values S and I should be summed, so resistance will be based on only R, defaults to TRUE

add_ab_group

a logical to indicate where the group of the antimicrobials must be included as a first column

remove_intrinsic_resistant

logical to indicate that rows and columns with 100% resistance for all tested antimicrobials must be removed from the table

decimal.mark

the character to be used to indicate the numeric decimal point.

big.mark

character; if not empty used as mark between every big.interval decimals before (hence big) the decimal point.

Value

The function bug_drug_combinations() returns a data.frame with columns "mo", "ab", "S", "I", "R" and "total".

Details

The function format() calculates the resistance per bug-drug combination. Use combine_SI = TRUE (default) to test R vs. S+I and combine_SI = FALSE to test R+I vs. S.

Examples

# example_isolates is a data set available in the AMR package.
# run ?example_isolates for more info.
example_isolates
#> # A tibble: 2,000 × 46
#>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX  
#>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir>
#>  1 2002-01-02 A77334     65 F      Clinical B_ESCHR_COLI R     NA    NA    NA   
#>  2 2002-01-03 A77334     65 F      Clinical B_ESCHR_COLI R     NA    NA    NA   
#>  3 2002-01-07 067927     45 F      ICU      B_STPHY_EPDR R     NA    R     NA   
#>  4 2002-01-07 067927     45 F      ICU      B_STPHY_EPDR R     NA    R     NA   
#>  5 2002-01-13 067927     45 F      ICU      B_STPHY_EPDR R     NA    R     NA   
#>  6 2002-01-13 067927     45 F      ICU      B_STPHY_EPDR R     NA    R     NA   
#>  7 2002-01-14 462729     78 M      Clinical B_STPHY_AURS R     NA    S     R    
#>  8 2002-01-14 462729     78 M      Clinical B_STPHY_AURS R     NA    S     R    
#>  9 2002-01-16 067927     45 F      ICU      B_STPHY_EPDR R     NA    R     NA   
#> 10 2002-01-17 858515     79 F      ICU      B_STPHY_EPDR R     NA    S     NA   
#> # … with 1,990 more rows, and 36 more variables: AMC <sir>, AMP <sir>,
#> #   TZP <sir>, CZO <sir>, FEP <sir>, CXM <sir>, FOX <sir>, CTX <sir>,
#> #   CAZ <sir>, CRO <sir>, GEN <sir>, TOB <sir>, AMK <sir>, KAN <sir>,
#> #   TMP <sir>, SXT <sir>, NIT <sir>, FOS <sir>, LNZ <sir>, CIP <sir>,
#> #   MFX <sir>, VAN <sir>, TEC <sir>, TCY <sir>, TGC <sir>, DOX <sir>,
#> #   ERY <sir>, CLI <sir>, AZM <sir>, IPM <sir>, MEM <sir>, MTR <sir>,
#> #   CHL <sir>, COL <sir>, MUP <sir>, RIF <sir>

# \donttest{
x <- bug_drug_combinations(example_isolates)
head(x)
#> # A tibble: 6 × 6
#>   mo                ab        S     I     R total
#>   <chr>             <chr> <int> <int> <int> <int>
#> 1 (unknown species) AMC      15     0     0    15
#> 2 (unknown species) AMK       0     0     0     0
#> 3 (unknown species) AMP      15     0     1    16
#> 4 (unknown species) AMX      15     0     1    16
#> 5 (unknown species) AZM       3     0     3     6
#> 6 (unknown species) CAZ       0     0     0     0
#> Use 'format()' on this result to get a publishable/printable format.
format(x, translate_ab = "name (atc)")
#> # A tibble: 39 × 12
#>    Group     Drug  CoNS  E. co…¹ E. fa…² K. pn…³ P. ae…⁴ P. mi…⁵ S. au…⁶ S. ep…⁷
#>    <chr>     <chr> <chr> <chr>   <chr>   <chr>   <chr>   <chr>   <chr>   <chr>  
#>  1 "Aminogl… Amik… "100… "  0.0… "100.0… ""      ""      ""      ""      "100.0…
#>  2 ""        Gent… " 13… "  2.0… "100.0… " 10.3… "  0.0… "  5.9… "  0.9… " 21.5…
#>  3 ""        Kana… "100… ""      "100.0… ""      "100.0… ""      ""      "100.0…
#>  4 ""        Tobr… " 78… "  2.6… "100.0… " 10.3… "  0.0… "  5.9… "  2.3… " 49.4…
#>  5 "Ampheni… Chlo… ""    ""      ""      ""      "100.0… ""      "  0.0… "  3.1…
#>  6 "Antimyc… Rifa… ""    "100.0… ""      "100.0… "100.0… "100.0… "  0.0… "  2.7…
#>  7 "Beta-la… Amox… " 93… " 50.0… ""      "100.0… "100.0… ""      " 93.9… " 98.9…
#>  8 ""        Amox… " 42… " 13.1… ""      " 10.3… "100.0… "  2.8… "  0.4… " 54.5…
#>  9 ""        Ampi… " 93… " 50.0… ""      "100.0… "100.0… ""      " 93.9… " 98.9…
#> 10 ""        Benz… " 77… "100.0… ""      "100.0… "100.0… "100.0… " 80.9… " 89.4…
#> # … with 29 more rows, 2 more variables: `S. hominis` <chr>,
#> #   `S. pneumoniae` <chr>, and abbreviated variable names ¹​`E. coli`,
#> #   ²​`E. faecalis`, ³​`K. pneumoniae`, ⁴​`P. aeruginosa`, ⁵​`P. mirabilis`,
#> #   ⁶​`S. aureus`, ⁷​`S. epidermidis`

# Use FUN to change to transformation of microorganism codes
bug_drug_combinations(example_isolates,
  FUN = mo_gramstain
)
#> # A tibble: 80 × 6
#>    mo            ab        S     I     R total
#>  * <chr>         <chr> <int> <int> <int> <int>
#>  1 Gram-negative AMC     463    89   174   726
#>  2 Gram-negative AMK     251     0     5   256
#>  3 Gram-negative AMP     226     0   405   631
#>  4 Gram-negative AMX     226     0   405   631
#>  5 Gram-negative AZM       1     2   696   699
#>  6 Gram-negative CAZ     607     0    27   634
#>  7 Gram-negative CHL       1     0    30    31
#>  8 Gram-negative CIP     610    11    63   684
#>  9 Gram-negative CLI      18     1   709   728
#> 10 Gram-negative COL     309     0    78   387
#> # … with 70 more rows
#> Use 'format()' on this result to get a publishable/printable format.

bug_drug_combinations(example_isolates,
  FUN = function(x) {
    ifelse(x == as.mo("Escherichia coli"),
      "E. coli",
      "Others"
    )
  }
)
#> # A tibble: 80 × 6
#>    mo      ab        S     I     R total
#>  * <chr>   <chr> <int> <int> <int> <int>
#>  1 E. coli AMC     332    74    61   467
#>  2 E. coli AMK     171     0     0   171
#>  3 E. coli AMP     196     0   196   392
#>  4 E. coli AMX     196     0   196   392
#>  5 E. coli AZM       0     0   467   467
#>  6 E. coli CAZ     449     0    11   460
#>  7 E. coli CHL       0     0     0     0
#>  8 E. coli CIP     398     1    57   456
#>  9 E. coli CLI       0     0   467   467
#> 10 E. coli COL     240     0     0   240
#> # … with 70 more rows
#> Use 'format()' on this result to get a publishable/printable format.
# }