diff --git a/NAMESPACE b/NAMESPACE index 93f122d9..7ca07bdf 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -120,12 +120,14 @@ importFrom(dplyr,arrange) importFrom(dplyr,arrange_at) importFrom(dplyr,as_tibble) importFrom(dplyr,between) -importFrom(dplyr,bind_cols) +importFrom(dplyr,bind_rows) importFrom(dplyr,case_when) importFrom(dplyr,desc) +importFrom(dplyr,everything) importFrom(dplyr,filter) importFrom(dplyr,group_by) importFrom(dplyr,group_by_at) +importFrom(dplyr,group_vars) importFrom(dplyr,if_else) importFrom(dplyr,lag) importFrom(dplyr,left_join) diff --git a/R/data.R b/R/data.R index f73f6377..bf0c763d 100755 --- a/R/data.R +++ b/R/data.R @@ -279,11 +279,11 @@ #' Dataset with 2000 blood culture isolates of septic patients #' -#' An anonymised dataset containing 2000 microbial blood culture isolates with their antibiogram of septic patients found in 5 different hospitals in the Netherlands, between 2001 and 2017. This data.frame can be used to practice AMR analysis. For examples, press F1. +#' An anonymised dataset containing 2000 microbial blood culture isolates with their full antibiograms found in septic patients in 4 different hospitals in the Netherlands, between 2001 and 2017. It is true, genuine data. This \code{data.frame} can be used to practice AMR analysis. For examples, press F1. #' @format A data.frame with 2000 observations and 49 variables: #' \describe{ #' \item{\code{date}}{date of receipt at the laboratory} -#' \item{\code{hospital_id}}{ID of the hospital} +#' \item{\code{hospital_id}}{ID of the hospital, from A to D} #' \item{\code{ward_icu}}{logical to determine if ward is an intensive care unit} #' \item{\code{ward_clinical}}{logical to determine if ward is a regular clinical ward} #' \item{\code{ward_outpatient}}{logical to determine if ward is an outpatient clinic} diff --git a/R/first_isolate.R b/R/first_isolate.R index 02bf5ec7..268ad604 100755 --- a/R/first_isolate.R +++ b/R/first_isolate.R @@ -55,7 +55,7 @@ #' @return A vector to add to table, see Examples. #' @source Methodology of this function is based on: \strong{M39 Analysis and Presentation of Cumulative Antimicrobial Susceptibility Test Data, 4th Edition}, 2014, \emph{Clinical and Laboratory Standards Institute (CLSI)}. \url{https://clsi.org/standards/products/microbiology/documents/m39/}. #' @examples -#' # septic_patients is a dataset available in the AMR package. It is true data. +#' # septic_patients is a dataset available in the AMR package. It is true, genuine data. #' ?septic_patients #' #' library(dplyr) diff --git a/R/ggplot_rsi.R b/R/ggplot_rsi.R index 00cf1e4d..190bf601 100644 --- a/R/ggplot_rsi.R +++ b/R/ggplot_rsi.R @@ -21,8 +21,9 @@ #' Use these functions to create bar plots for antimicrobial resistance analysis. All functions rely on internal \code{\link[ggplot2]{ggplot}} functions. #' @param data a \code{data.frame} with column(s) of class \code{"rsi"} (see \code{\link{as.rsi}}) #' @param position position adjustment of bars, either \code{"stack"} (default) or \code{"dodge"} -#' @param x parameter to show on x axis, either \code{"Antibiotic"} (default) or \code{"Interpretation"} -#' @param facet parameter to split plots by, either \code{"Interpretation"} (default) or \code{"Antibiotic"} +#' @param x variable to show on x axis, either \code{"Antibiotic"} (default) or \code{"Interpretation"} +#' @param fill variable to categorise using the plots legend +#' @param facet variable to split plots by, either \code{"Interpretation"} (default) or \code{"Antibiotic"} #' @details At default, the names of antibiotics will be shown on the plots using \code{\link{abname}}. This can be set with the option \code{get_antibiotic_names} (a logical value), so change it e.g. to \code{FALSE} with \code{options(get_antibiotic_names = FALSE)}. #' #' \strong{The functions}\cr @@ -64,8 +65,18 @@ #' septic_patients %>% #' select(amox, nitr, fosf, trim, cipr) %>% #' ggplot_rsi(x = "Interpretation", facet = "Antibiotic") +#' +#' # it also supports groups (don't forget to use facet on the group): +#' septic_patients %>% +#' select(hospital_id, amox, cipr) %>% +#' group_by(hospital_id) %>% +#' ggplot_rsi() + +#' facet_grid("hospital_id") + +#' labs(title = "AMR of Amoxicillin And Ciprofloxacine Per Hospital") ggplot_rsi <- function(data, + position = "stack", x = "Antibiotic", + fill = "Interpretation", facet = NULL) { if (!"ggplot2" %in% rownames(installed.packages())) { @@ -73,11 +84,15 @@ ggplot_rsi <- function(data, } p <- ggplot2::ggplot(data = data) + - geom_rsi(x = x) + + geom_rsi(position = position, x = x, fill = fill) + scale_y_percent() + - scale_rsi_colours() + theme_rsi() + if (fill == "Interpretation") { + # set RSI colours + p <- p + scale_rsi_colours() + } + if (!is.null(facet)) { p <- p + facet_rsi(facet = facet) } @@ -87,7 +102,7 @@ ggplot_rsi <- function(data, #' @rdname ggplot_rsi #' @export -geom_rsi <- function(position = "stack", x = c("Antibiotic", "Interpretation")) { +geom_rsi <- function(position = "stack", x = c("Antibiotic", "Interpretation"), fill = "Interpretation") { x <- x[1] if (!x %in% c("Antibiotic", "Interpretation")) { @@ -95,8 +110,8 @@ geom_rsi <- function(position = "stack", x = c("Antibiotic", "Interpretation")) } ggplot2::layer(geom = "bar", stat = "identity", position = position, - mapping = ggplot2::aes_string(x = x, y = "Percentage", fill = "Interpretation"), - data = AMR::portion_df, params = list()) + mapping = ggplot2::aes_string(x = x, y = "Percentage", fill = fill), + data = AMR::portion_df, params = list()) } diff --git a/R/portion.R b/R/portion.R index 71ed9d9c..d60c918d 100755 --- a/R/portion.R +++ b/R/portion.R @@ -29,7 +29,7 @@ #' @param translate a logical value to indicate whether antibiotic abbreviations should be translated with \code{\link{abname}} #' @details \strong{Remember that you should filter your table to let it contain only first isolates!} Use \code{\link{first_isolate}} to determine them in your data set. #' -#' \code{portion_df} takes any variable from \code{data} that has an \code{"rsi"} class (created with \code{\link{as.rsi}}) and calculates the portions R, I and S. The resulting \code{data.frame} will have three rows (for R/I/S) and a column for each variable with class \code{"rsi"}. +#' \code{portion_df} takes any variable from \code{data} that has an \code{"rsi"} class (created with \code{\link{as.rsi}}) and calculates the portions R, I and S. The resulting \emph{tidy data} (see Source) \code{data.frame} will have three rows (S/I/R) and a column for each variable with class \code{"rsi"}. #' #' The old \code{\link{rsi}} function is still available for backwards compatibility but is deprecated. #' \if{html}{ @@ -45,6 +45,8 @@ #' \out{
}\figure{combi_therapy_3.png}\out{
} #' } #' @source \strong{M39 Analysis and Presentation of Cumulative Antimicrobial Susceptibility Test Data, 4th Edition}, 2014, \emph{Clinical and Laboratory Standards Institute (CLSI)}. \url{https://clsi.org/standards/products/microbiology/documents/m39/}. +#' +#' Wickham H. \strong{Tidy Data.} The Journal of Statistical Software, vol. 59, 2014. \url{http://vita.had.co.nz/papers/tidy-data.html} #' @seealso \code{\link{n_rsi}} to count cases with antimicrobial results. #' @keywords resistance susceptibility rsi_df rsi antibiotics isolate isolates #' @return Double or, when \code{as_percent = TRUE}, a character. @@ -52,6 +54,9 @@ #' @name portion #' @export #' @examples +#' # septic_patients is a data set available in the AMR package. It is true, genuine data. +#' ?septic_patients +#' #' # Calculate resistance #' portion_R(septic_patients$amox) #' portion_IR(septic_patients$amox) @@ -100,6 +105,18 @@ #' combination_p = portion_S(cipr, gent, as_percent = TRUE), #' combination_n = n_rsi(cipr, gent)) #' +#' # Get portions S/I/R immediately of all rsi columns +#' septic_patients %>% +#' select(amox, cipr) %>% +#' portion_df(translate = FALSE) +#' +#' # It also supports grouping variables +#' septic_patients %>% +#' select(hospital_id, amox, cipr) %>% +#' group_by(hospital_id) %>% +#' portion_df(translate = FALSE) +#' +#' #' \dontrun{ #' #' # calculate current empiric combination therapy of Helicobacter gastritis: @@ -177,25 +194,33 @@ portion_S <- function(ab1, } #' @rdname portion -#' @importFrom dplyr bind_cols summarise_if mutate +#' @importFrom dplyr bind_rows summarise_if mutate group_vars select everything #' @export portion_df <- function(data, translate = getOption("get_antibiotic_names", TRUE)) { - resS <- bind_cols(data.frame(Interpretation = "S", stringsAsFactors = FALSE), - summarise_if(.tbl = data, - .predicate = is.rsi, - .funs = portion_S)) - resI <- bind_cols(data.frame(Interpretation = "I", stringsAsFactors = FALSE), - summarise_if(.tbl = data, - .predicate = is.rsi, - .funs = portion_I)) - resR <- bind_cols(data.frame(Interpretation = "R", stringsAsFactors = FALSE), - summarise_if(.tbl = data, - .predicate = is.rsi, - .funs = portion_R)) + + resS <- summarise_if(.tbl = data, + .predicate = is.rsi, + .funs = portion_S) %>% + mutate(Interpretation = "S") %>% + select(Interpretation, everything()) + + resI <- summarise_if(.tbl = data, + .predicate = is.rsi, + .funs = portion_I) %>% + mutate(Interpretation = "I") %>% + select(Interpretation, everything()) + + resR <- summarise_if(.tbl = data, + .predicate = is.rsi, + .funs = portion_R) %>% + mutate(Interpretation = "R") %>% + select(Interpretation, everything()) + + data.groups <- group_vars(data) res <- bind_rows(resS, resI, resR) %>% mutate(Interpretation = factor(Interpretation, levels = c("R", "I", "S"), ordered = TRUE)) %>% - tidyr::gather(Antibiotic, Percentage, -Interpretation) + tidyr::gather(Antibiotic, Percentage, -Interpretation, -data.groups) if (translate == TRUE) { res <- res %>% mutate(Antibiotic = abname(Antibiotic, from = "guess", to = "official")) } diff --git a/README.md b/README.md index 3bbdcace..e4342034 100755 --- a/README.md +++ b/README.md @@ -24,6 +24,19 @@ Erwin E.A. Hassing2, +## Contents +* [Why this package?](#why-this-package) +* [How to get it?](#how-to-get-it) + * [Install from CRAN](#install-from-cran) + * [Install from GitHub](#install-from-github) +* [How to use it?](#how-to-use-it) + * [New classes](#new-classes) + * [Overwrite/force resistance based on EUCAST rules](#overwriteforce-resistance-based-on-eucast-rules) + * [Other (microbial) epidemiological functions](#other-microbial-epidemiological-functions) + * [Frequency tables](#frequency-tables) + * [Data sets included in package](#data-sets-included-in-package) +* [Copyright](#copyright) + ## Why this package? This R package was intended to make microbial epidemiology easier. Most functions contain extensive help pages to get started. @@ -50,12 +63,12 @@ And it contains: With the `MDRO` function (abbreviation of Multi Drug Resistant Organisms), you can check your isolates for exceptional resistance with country-specific guidelines or EUCAST rules. Currently guidelines for Germany and the Netherlands are supported. Please suggest addition of your own country here: [https://github.com/msberends/AMR/issues/new](https://github.com/msberends/AMR/issues/new?title=New%20guideline%20for%20MDRO&body=%3C--%20Please%20add%20your%20country%20code,%20guideline%20name,%20version%20and%20source%20below%20and%20remove%20this%20line--%3E). -#### Read all changes and new functions in [NEWS.md](NEWS.md). +**Read all changes and new functions in [NEWS.md](NEWS.md).** ## How to get it? This package [is published on CRAN](http://cran.r-project.org/package=AMR), the official R network. -### Install from CRAN (recommended) +### Install from CRAN [![CRAN_Badge](https://img.shields.io/cran/v/AMR.svg?label=CRAN&colorB=3679BC)](http://cran.r-project.org/package=AMR) [![CRAN_Downloads](https://cranlogs.r-pkg.org/badges/grand-total/AMR)](http://cran.r-project.org/package=AMR) (Note: Downloads measured only by [cran.rstudio.com](https://cran.rstudio.com/package=AMR), this excludes e.g. the official [cran.r-project.org](https://cran.r-project.org/package=AMR)) @@ -67,7 +80,7 @@ This package [is published on CRAN](http://cran.r-project.org/package=AMR), the - R favicon Install in R directly: - `install.packages("AMR")` -### Install from GitHub (latest development version) +### Install from GitHub [![Travis_Build](https://travis-ci.org/msberends/AMR.svg?branch=master)](https://travis-ci.org/msberends/AMR) [![Since_Release](https://img.shields.io/github/commits-since/msberends/AMR/latest.svg?colorB=3679BC)](https://github.com/msberends/AMR/commits/master) [![Last_Commit](https://img.shields.io/github/last-commit/msberends/AMR.svg)](https://github.com/msberends/AMR/commits/master) @@ -86,6 +99,85 @@ library(AMR) # For a list of functions: help(package = "AMR") ``` + +### New classes +This package contains two new S3 classes: `mic` for MIC values (e.g. from Vitek or Phoenix) and `rsi` for antimicrobial drug interpretations (i.e. S, I and R). Both are actually ordered factors under the hood (an MIC of `2` being higher than `<=1` but lower than `>=32`, and for class `rsi` factors are ordered as `S < I < R`). +Both classes have extensions for existing generic functions like `print`, `summary` and `plot`. + +These functions also try to coerce valid values. + +#### RSI +The `septic_patients` data set comes with antimicrobial results of more than 40 different drugs. For example, columns `amox` and `cipr` contain results of amoxicillin and ciprofloxacin, respectively. +```r +summary(septic_patients[, c("amox", "cipr")]) +# amox cipr +# Mode :rsi Mode :rsi +# :1002 :596 +# Sum S :336 Sum S :1108 +# Sum IR:662 Sum IR:296 +# -Sum R:659 -Sum R:227 +# -Sum I:3 -Sum I:69 +``` + +You can use the `plot` function from base R: +```r +plot(septic_patients$cipr) +``` + +![example_1_rsi](man/figures/rsi_example1.png) + +Or use the `ggplot2` and `dplyr` packages to create more appealing plots: +```r +library(dplyr) +library(ggplot2) + +septic_patients %>% + select(amox, cipr) %>% + ggplot_rsi() +``` + +![example_2_rsi](man/figures/rsi_example2.png) + +```r +septic_patients %>% + select(amox, cipr) %>% + ggplot_rsi(x = "Interpretation", facet = "Antibiotic") +``` + +![example_3_rsi](man/figures/rsi_example3.png) + +It also supports grouping variables. Let's say we want to compare resistance of these antibiotics between hospitals A to D (variable `hospital_id`): + +```r +septic_patients %>% + select(hospital_id, amox, cipr) %>% + group_by(hospital_id) %>% + ggplot_rsi() + # start adding ggplot elements here with `+` + facet_grid("hospital_id") + # splitting the plots on our grouping variable + labs(title = "AMR of Amoxicillin And Ciprofloxacine Per Hospital") +``` + +![example_4_rsi](man/figures/rsi_example4.png) + +You could use this to group on anything in your plots: Gram stain, age (group), genus, geographic location, et cetera. + +#### MIC + +```r +# Transform values to new class +mic_data <- as.mic(c(">=32", "1.0", "8", "<=0.128", "8", "16", "16")) + +summary(mic_data) +# Mode:mic +# :0 +# Min.:<=0.128 +# Max.:>=32 + +plot(mic_data) +``` +![example_mic](man/figures/mic_example.png) + + ### Overwrite/force resistance based on EUCAST rules This is also called *interpretive reading*. ```r @@ -132,69 +224,12 @@ guess_bactid("VISA") # Vancomycin Intermediate S. aureus guess_bactid("VRSA") # Vancomycin Resistant S. aureus ``` -### New classes -This package contains two new S3 classes: `mic` for MIC values (e.g. from Vitek or Phoenix) and `rsi` for antimicrobial drug interpretations (i.e. S, I and R). Both are actually ordered factors under the hood (an MIC of `2` being higher than `<=1` but lower than `>=32`, and for class `rsi` factors are ordered as `S < I < R`). -Both classes have extensions for existing generic functions like `print`, `summary` and `plot`. - -These functions also try to coerce valid values. - -#### RSI -The `septic_patients` data set comes with antimicrobial results of more than 40 different drugs. For example, columns `amox` and `cipr` contain results of amoxicillin and ciprofloxacin, respectively. -```r -summary(septic_patients[, c("amox", "cipr")]) -# amox cipr -# Mode :rsi Mode :rsi -# :1002 :596 -# Sum S :336 Sum S :1108 -# Sum IR:662 Sum IR:296 -# -Sum R:659 -Sum R:227 -# -Sum I:3 -Sum I:69 -``` - -You can use the `plot` function from base R: -```r -plot(septic_patients$cipr) -``` - -![example_1_rsi](man/figures/rsi_example1.png) - -Or use the `ggplot2` and `dplyr` packages to create more appealing plots: -```r -septic_patients %>% - select(amox, cipr) %>% - ggplot_rsi() -``` - -![example_2_rsi](man/figures/rsi_example2.png) +### Other (microbial) epidemiological functions ```r -septic_patients %>% - select(amox, cipr) %>% - ggplot_rsi(x = "Interpretation", facet = "Antibiotic") -``` +# G-test to replace Chi squared test +g.test(...) -![example_3_rsi](man/figures/rsi_example3.png) - - -#### MIC - -```r -# Transform values to new class -mic_data <- as.mic(c(">=32", "1.0", "8", "<=0.128", "8", "16", "16")) - -summary(mic_data) -# Mode:mic -# :0 -# Min.:<=0.128 -# Max.:>=32 - -plot(mic_data) -``` -![example_mic](man/figures/mic_example.png) - -Other epidemiological functions: - -```r # Determine key antibiotic based on bacteria ID key_antibiotics(...) @@ -318,7 +353,7 @@ Learn more about this function with: ?freq ``` -### Databases included in package +### Data sets included in package Datasets to work with antibiotics and bacteria properties. ```r # Dataset with 2000 random blood culture isolates from anonymised diff --git a/man/figures/rsi_example4.png b/man/figures/rsi_example4.png new file mode 100644 index 00000000..2766db1c Binary files /dev/null and b/man/figures/rsi_example4.png differ diff --git a/man/first_isolate.Rd b/man/first_isolate.Rd index 629bd5e8..24a4e714 100755 --- a/man/first_isolate.Rd +++ b/man/first_isolate.Rd @@ -76,7 +76,7 @@ Determine first (weighted) isolates of all microorganisms of every patient per e } \examples{ -# septic_patients is a dataset available in the AMR package. It is true data. +# septic_patients is a dataset available in the AMR package. It is true, genuine data. ?septic_patients library(dplyr) diff --git a/man/ggplot_rsi.Rd b/man/ggplot_rsi.Rd index 95c6bd6a..5eb020e5 100644 --- a/man/ggplot_rsi.Rd +++ b/man/ggplot_rsi.Rd @@ -9,9 +9,11 @@ \alias{theme_rsi} \title{AMR bar plots with \code{ggplot}} \usage{ -ggplot_rsi(data, x = "Antibiotic", facet = NULL) +ggplot_rsi(data, position = "stack", x = "Antibiotic", + fill = "Interpretation", facet = NULL) -geom_rsi(position = "stack", x = c("Antibiotic", "Interpretation")) +geom_rsi(position = "stack", x = c("Antibiotic", "Interpretation"), + fill = "Interpretation") facet_rsi(facet = c("Interpretation", "Antibiotic")) @@ -24,11 +26,13 @@ theme_rsi() \arguments{ \item{data}{a \code{data.frame} with column(s) of class \code{"rsi"} (see \code{\link{as.rsi}})} -\item{x}{parameter to show on x axis, either \code{"Antibiotic"} (default) or \code{"Interpretation"}} - -\item{facet}{parameter to split plots by, either \code{"Interpretation"} (default) or \code{"Antibiotic"}} - \item{position}{position adjustment of bars, either \code{"stack"} (default) or \code{"dodge"}} + +\item{x}{variable to show on x axis, either \code{"Antibiotic"} (default) or \code{"Interpretation"}} + +\item{fill}{variable to categorise using the plots legend} + +\item{facet}{variable to split plots by, either \code{"Interpretation"} (default) or \code{"Antibiotic"}} } \description{ Use these functions to create bar plots for antimicrobial resistance analysis. All functions rely on internal \code{\link[ggplot2]{ggplot}} functions. @@ -74,4 +78,12 @@ septic_patients \%>\% septic_patients \%>\% select(amox, nitr, fosf, trim, cipr) \%>\% ggplot_rsi(x = "Interpretation", facet = "Antibiotic") + +# it also supports groups (don't forget to use facet on the group): +septic_patients \%>\% + select(hospital_id, amox, cipr) \%>\% + group_by(hospital_id) \%>\% + ggplot_rsi() + + facet_grid("hospital_id") + + labs(title = "AMR of Amoxicillin And Ciprofloxacine Per Hospital") } diff --git a/man/portion.Rd b/man/portion.Rd index edd4b58f..572e847c 100644 --- a/man/portion.Rd +++ b/man/portion.Rd @@ -11,6 +11,8 @@ \title{Calculate resistance of isolates} \source{ \strong{M39 Analysis and Presentation of Cumulative Antimicrobial Susceptibility Test Data, 4th Edition}, 2014, \emph{Clinical and Laboratory Standards Institute (CLSI)}. \url{https://clsi.org/standards/products/microbiology/documents/m39/}. + +Wickham H. \strong{Tidy Data.} The Journal of Statistical Software, vol. 59, 2014. \url{http://vita.had.co.nz/papers/tidy-data.html} } \usage{ portion_R(ab1, ab2 = NULL, minimum = 30, as_percent = FALSE) @@ -49,7 +51,7 @@ These functions can be used to calculate the (co-)resistance of microbial isolat \details{ \strong{Remember that you should filter your table to let it contain only first isolates!} Use \code{\link{first_isolate}} to determine them in your data set. -\code{portion_df} takes any variable from \code{data} that has an \code{"rsi"} class (created with \code{\link{as.rsi}}) and calculates the portions R, I and S. The resulting \code{data.frame} will have three rows (for R/I/S) and a column for each variable with class \code{"rsi"}. +\code{portion_df} takes any variable from \code{data} that has an \code{"rsi"} class (created with \code{\link{as.rsi}}) and calculates the portions R, I and S. The resulting \emph{tidy data} (see Source) \code{data.frame} will have three rows (S/I/R) and a column for each variable with class \code{"rsi"}. The old \code{\link{rsi}} function is still available for backwards compatibility but is deprecated. \if{html}{ @@ -66,6 +68,9 @@ The old \code{\link{rsi}} function is still available for backwards compatibilit } } \examples{ +# septic_patients is a data set available in the AMR package. It is true, genuine data. +?septic_patients + # Calculate resistance portion_R(septic_patients$amox) portion_IR(septic_patients$amox) @@ -114,6 +119,18 @@ septic_patients \%>\% combination_p = portion_S(cipr, gent, as_percent = TRUE), combination_n = n_rsi(cipr, gent)) +# Get portions S/I/R immediately of all rsi columns +septic_patients \%>\% + select(amox, cipr) \%>\% + portion_df(translate = FALSE) + +# It also supports grouping variables +septic_patients \%>\% + select(hospital_id, amox, cipr) \%>\% + group_by(hospital_id) \%>\% + portion_df(translate = FALSE) + + \dontrun{ # calculate current empiric combination therapy of Helicobacter gastritis: diff --git a/man/septic_patients.Rd b/man/septic_patients.Rd index 7d84ee87..cd494038 100755 --- a/man/septic_patients.Rd +++ b/man/septic_patients.Rd @@ -7,7 +7,7 @@ \format{A data.frame with 2000 observations and 49 variables: \describe{ \item{\code{date}}{date of receipt at the laboratory} - \item{\code{hospital_id}}{ID of the hospital} + \item{\code{hospital_id}}{ID of the hospital, from A to D} \item{\code{ward_icu}}{logical to determine if ward is an intensive care unit} \item{\code{ward_clinical}}{logical to determine if ward is a regular clinical ward} \item{\code{ward_outpatient}}{logical to determine if ward is an outpatient clinic} @@ -21,7 +21,7 @@ septic_patients } \description{ -An anonymised dataset containing 2000 microbial blood culture isolates with their antibiogram of septic patients found in 5 different hospitals in the Netherlands, between 2001 and 2017. This data.frame can be used to practice AMR analysis. For examples, press F1. +An anonymised dataset containing 2000 microbial blood culture isolates with their full antibiograms found in septic patients in 4 different hospitals in the Netherlands, between 2001 and 2017. It is true, genuine data. This \code{data.frame} can be used to practice AMR analysis. For examples, press F1. } \examples{ # ----------- # diff --git a/tests/testthat/test-ggplot_rsi.R b/tests/testthat/test-ggplot_rsi.R index e46e24d6..ee4bf8fc 100644 --- a/tests/testthat/test-ggplot_rsi.R +++ b/tests/testthat/test-ggplot_rsi.R @@ -32,4 +32,13 @@ test_that("ggplot_rsi works", { expect_error(geom_rsi(x = "test")) expect_error(facet_rsi(facet = "test")) + # support for groups + print( + septic_patients %>% + select(hospital_id, amox, cipr) %>% + group_by(hospital_id) %>% + ggplot_rsi() + + facet_grid("hospital_id") + ) + })