mirror of https://github.com/msberends/AMR.git
1552 lines
95 KiB
HTML
1552 lines
95 KiB
HTML
<!DOCTYPE html>
|
||
<!-- Generated by pkgdown: do not edit by hand --><html lang="en">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>How to conduct AMR data analysis • AMR (for R)</title>
|
||
<!-- favicons --><link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="../favicon-32x32.png">
|
||
<link rel="apple-touch-icon" type="image/png" sizes="180x180" href="../apple-touch-icon.png">
|
||
<link rel="apple-touch-icon" type="image/png" sizes="120x120" href="../apple-touch-icon-120x120.png">
|
||
<link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png">
|
||
<link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png">
|
||
<!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script><!-- Bootstrap --><link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/flatly/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script><!-- bootstrap-toc --><link rel="stylesheet" href="../bootstrap-toc.css">
|
||
<script src="../bootstrap-toc.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous">
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous">
|
||
<!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="../pkgdown.css" rel="stylesheet">
|
||
<script src="../pkgdown.js"></script><link href="../extra.css" rel="stylesheet">
|
||
<script src="../extra.js"></script><meta property="og:title" content="How to conduct AMR data analysis">
|
||
<meta property="og:description" content="AMR">
|
||
<meta property="og:image" content="https://msberends.github.io/AMR/logo.svg">
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:creator" content="@msberends">
|
||
<meta name="twitter:site" content="@univgroningen">
|
||
<!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]>
|
||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||
<![endif]-->
|
||
</head>
|
||
<body data-spy="scroll" data-target="#toc">
|
||
|
||
|
||
<div class="container template-article">
|
||
<header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
|
||
<div class="container">
|
||
<div class="navbar-header">
|
||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
|
||
<span class="sr-only">Toggle navigation</span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
<span class="icon-bar"></span>
|
||
</button>
|
||
<span class="navbar-brand">
|
||
<a class="navbar-link" href="../index.html">AMR (for R)</a>
|
||
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.8.1.9008</span>
|
||
</span>
|
||
</div>
|
||
|
||
<div id="navbar" class="navbar-collapse collapse">
|
||
<ul class="nav navbar-nav">
|
||
<li>
|
||
<a href="../index.html">
|
||
<span class="fa fa-home"></span>
|
||
|
||
Home
|
||
</a>
|
||
</li>
|
||
<li class="dropdown">
|
||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||
<span class="fa fa-question-circle"></span>
|
||
|
||
How to
|
||
|
||
<span class="caret"></span>
|
||
</a>
|
||
<ul class="dropdown-menu" role="menu">
|
||
<li>
|
||
<a href="../articles/AMR.html">
|
||
<span class="fa fa-directions"></span>
|
||
|
||
Conduct AMR analysis
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="../articles/resistance_predict.html">
|
||
<span class="fa fa-dice"></span>
|
||
|
||
Predict antimicrobial resistance
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="../articles/datasets.html">
|
||
<span class="fa fa-database"></span>
|
||
|
||
Data sets for download / own use
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="../articles/PCA.html">
|
||
<span class="fa fa-compress"></span>
|
||
|
||
Conduct principal component analysis for AMR
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="../articles/MDR.html">
|
||
<span class="fa fa-skull-crossbones"></span>
|
||
|
||
Determine multi-drug resistance (MDR)
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="../articles/WHONET.html">
|
||
<span class="fa fa-globe-americas"></span>
|
||
|
||
Work with WHONET data
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="../articles/SPSS.html">
|
||
<span class="fa fa-file-upload"></span>
|
||
|
||
Import data from SPSS/SAS/Stata
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="../articles/EUCAST.html">
|
||
<span class="fa fa-exchange-alt"></span>
|
||
|
||
Apply EUCAST rules
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="../reference/mo_property.html">
|
||
<span class="fa fa-bug"></span>
|
||
|
||
Get properties of a microorganism
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="../reference/ab_property.html">
|
||
<span class="fa fa-capsules"></span>
|
||
|
||
Get properties of an antibiotic
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="../articles/benchmarks.html">
|
||
<span class="fa fa-shipping-fast"></span>
|
||
|
||
Other: benchmarks
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<a href="../reference/index.html">
|
||
<span class="fa fa-book-open"></span>
|
||
|
||
Manual
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="../authors.html">
|
||
<span class="fa fa-users"></span>
|
||
|
||
Authors
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a href="../news/index.html">
|
||
<span class="far fa-newspaper"></span>
|
||
|
||
Changelog
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
<ul class="nav navbar-nav navbar-right">
|
||
<li>
|
||
<a href="https://github.com/msberends/AMR" class="external-link">
|
||
<span class="fab fa-github"></span>
|
||
|
||
Source Code
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<!--/.nav-collapse -->
|
||
</div>
|
||
<!--/.container -->
|
||
</div>
|
||
<!--/.navbar -->
|
||
|
||
|
||
|
||
</header><div class="row">
|
||
<div class="col-md-9 contents">
|
||
<div class="page-header toc-ignore">
|
||
<h1 data-toc-skip>How to conduct AMR data analysis</h1>
|
||
<h4 data-toc-skip class="author">Dr Matthijs
|
||
Berends</h4>
|
||
|
||
<h4 data-toc-skip class="date">11 mei 2022</h4>
|
||
|
||
<small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/HEAD/vignettes/AMR.Rmd" class="external-link"><code>vignettes/AMR.Rmd</code></a></small>
|
||
<div class="hidden name"><code>AMR.Rmd</code></div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<p><strong>Note:</strong> values on this page will change with every
|
||
website update since they are based on randomly created values and the
|
||
page was written in <a href="https://rmarkdown.rstudio.com/" class="external-link">R
|
||
Markdown</a>. However, the methodology remains unchanged. This page was
|
||
generated on 11 mei 2022.</p>
|
||
<div class="section level2">
|
||
<h2 id="introduction">Introduction<a class="anchor" aria-label="anchor" href="#introduction"></a>
|
||
</h2>
|
||
<p>Conducting AMR data analysis unfortunately requires in-depth
|
||
knowledge from different scientific fields, which makes it hard to do
|
||
right. At least, it requires:</p>
|
||
<ul>
|
||
<li>Good questions (always start with those!)</li>
|
||
<li>A thorough understanding of (clinical) epidemiology, to understand
|
||
the clinical and epidemiological relevance and possible bias of
|
||
results</li>
|
||
<li>A thorough understanding of (clinical) microbiology/infectious
|
||
diseases, to understand which microorganisms are causal to which
|
||
infections and the implications of pharmaceutical treatment, as well as
|
||
understanding intrinsic and acquired microbial resistance</li>
|
||
<li>Experience with data analysis with microbiological tests and their
|
||
results, to understand the determination and limitations of MIC values
|
||
and their interpretations to RSI values</li>
|
||
<li>Availability of the biological taxonomy of microorganisms and
|
||
probably normalisation factors for pharmaceuticals, such as defined
|
||
daily doses (DDD)</li>
|
||
<li>Available (inter-)national guidelines, and profound methods to apply
|
||
them</li>
|
||
</ul>
|
||
<p>Of course, we cannot instantly provide you with knowledge and
|
||
experience. But with this <code>AMR</code> package, we aimed at
|
||
providing (1) tools to simplify antimicrobial resistance data cleaning,
|
||
transformation and analysis, (2) methods to easily incorporate
|
||
international guidelines and (3) scientifically reliable reference data,
|
||
including the requirements mentioned above.</p>
|
||
<p>The <code>AMR</code> package enables standardised and reproducible
|
||
AMR data analysis, with the application of evidence-based rules,
|
||
determination of first isolates, translation of various codes for
|
||
microorganisms and antimicrobial agents, determination of (multi-drug)
|
||
resistant microorganisms, and calculation of antimicrobial resistance,
|
||
prevalence and future trends.</p>
|
||
</div>
|
||
<div class="section level2">
|
||
<h2 id="preparation">Preparation<a class="anchor" aria-label="anchor" href="#preparation"></a>
|
||
</h2>
|
||
<p>For this tutorial, we will create fake demonstration data to work
|
||
with.</p>
|
||
<p>You can skip to <a href="#cleaning-the-data">Cleaning the data</a> if
|
||
you already have your own data ready. If you start your analysis, try to
|
||
make the structure of your data generally look like this:</p>
|
||
<table class="table">
|
||
<thead><tr class="header">
|
||
<th align="center">date</th>
|
||
<th align="center">patient_id</th>
|
||
<th align="center">mo</th>
|
||
<th align="center">AMX</th>
|
||
<th align="center">CIP</th>
|
||
</tr></thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td align="center">2022-05-11</td>
|
||
<td align="center">abcd</td>
|
||
<td align="center">Escherichia coli</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">2022-05-11</td>
|
||
<td align="center">abcd</td>
|
||
<td align="center">Escherichia coli</td>
|
||
<td align="center">S</td>
|
||
<td align="center">R</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="center">2022-05-11</td>
|
||
<td align="center">efgh</td>
|
||
<td align="center">Escherichia coli</td>
|
||
<td align="center">R</td>
|
||
<td align="center">S</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<div class="section level3">
|
||
<h3 id="needed-r-packages">Needed R packages<a class="anchor" aria-label="anchor" href="#needed-r-packages"></a>
|
||
</h3>
|
||
<p>As with many uses in R, we need some additional packages for AMR data
|
||
analysis. Our package works closely together with the <a href="https://www.tidyverse.org" class="external-link">tidyverse packages</a> <a href="https://dplyr.tidyverse.org/" class="external-link"><code>dplyr</code></a> and <a href="https://ggplot2.tidyverse.org" class="external-link"><code>ggplot2</code></a> by
|
||
RStudio. The tidyverse tremendously improves the way we conduct data
|
||
science - it allows for a very natural way of writing syntaxes and
|
||
creating beautiful plots in R.</p>
|
||
<p>We will also use the <code>cleaner</code> package, that can be used
|
||
for cleaning data and creating frequency tables.</p>
|
||
<div class="sourceCode" id="cb1"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://dplyr.tidyverse.org" class="external-link">dplyr</a></span><span class="op">)</span>
|
||
<span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://ggplot2.tidyverse.org" class="external-link">ggplot2</a></span><span class="op">)</span>
|
||
<span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://msberends.github.io/AMR/">AMR</a></span><span class="op">)</span>
|
||
<span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://github.com/msberends/cleaner" class="external-link">cleaner</a></span><span class="op">)</span>
|
||
|
||
<span class="co"># (if not yet installed, install with:)</span>
|
||
<span class="co"># install.packages(c("dplyr", "ggplot2", "AMR", "cleaner"))</span></code></pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section level2">
|
||
<h2 id="creation-of-data">Creation of data<a class="anchor" aria-label="anchor" href="#creation-of-data"></a>
|
||
</h2>
|
||
<p>We will create some fake example data to use for analysis. For AMR
|
||
data analysis, we need at least: a patient ID, name or code of a
|
||
microorganism, a date and antimicrobial results (an antibiogram). It
|
||
could also include a specimen type (e.g. to filter on blood or urine),
|
||
the ward type (e.g. to filter on ICUs).</p>
|
||
<p>With additional columns (like a hospital name, the patients gender of
|
||
even [well-defined] clinical properties) you can do a comparative
|
||
analysis, as this tutorial will demonstrate too.</p>
|
||
<div class="section level3">
|
||
<h3 id="patients">Patients<a class="anchor" aria-label="anchor" href="#patients"></a>
|
||
</h3>
|
||
<p>To start with patients, we need a unique list of patients.</p>
|
||
<div class="sourceCode" id="cb2"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">patients</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/unlist.html" class="external-link">unlist</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/lapply.html" class="external-link">lapply</a></span><span class="op">(</span><span class="va">LETTERS</span>, <span class="va">paste0</span>, <span class="fl">1</span><span class="op">:</span><span class="fl">10</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<p>The <code>LETTERS</code> object is available in R - it’s a vector
|
||
with 26 characters: <code>A</code> to <code>Z</code>. The
|
||
<code>patients</code> object we just created is now a vector of length
|
||
260, with values (patient IDs) varying from <code>A1</code> to
|
||
<code>Z10</code>. Now we we also set the gender of our patients, by
|
||
putting the ID and the gender in a table:</p>
|
||
<div class="sourceCode" id="cb3"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">patients_table</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span>patient_id <span class="op">=</span> <span class="va">patients</span>,
|
||
gender <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"M"</span>, <span class="fl">135</span><span class="op">)</span>,
|
||
<span class="fu"><a href="https://rdrr.io/r/base/rep.html" class="external-link">rep</a></span><span class="op">(</span><span class="st">"F"</span>, <span class="fl">125</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<p>The first 135 patient IDs are now male, the other 125 are female.</p>
|
||
</div>
|
||
<div class="section level3">
|
||
<h3 id="dates">Dates<a class="anchor" aria-label="anchor" href="#dates"></a>
|
||
</h3>
|
||
<p>Let’s pretend that our data consists of blood cultures isolates from
|
||
between 1 January 2010 and 1 January 2018.</p>
|
||
<div class="sourceCode" id="cb4"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">dates</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/seq.html" class="external-link">seq</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/as.Date.html" class="external-link">as.Date</a></span><span class="op">(</span><span class="st">"2010-01-01"</span><span class="op">)</span>, <span class="fu"><a href="https://rdrr.io/r/base/as.Date.html" class="external-link">as.Date</a></span><span class="op">(</span><span class="st">"2018-01-01"</span><span class="op">)</span>, by <span class="op">=</span> <span class="st">"day"</span><span class="op">)</span></code></pre></div>
|
||
<p>This <code>dates</code> object now contains all days in our date
|
||
range.</p>
|
||
<div class="section level5">
|
||
<h5 id="microorganisms">Microorganisms<a class="anchor" aria-label="anchor" href="#microorganisms"></a>
|
||
</h5>
|
||
<p>For this tutorial, we will uses four different microorganisms:
|
||
<em>Escherichia coli</em>, <em>Staphylococcus aureus</em>,
|
||
<em>Streptococcus pneumoniae</em>, and <em>Klebsiella
|
||
pneumoniae</em>:</p>
|
||
<div class="sourceCode" id="cb5"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">bacteria</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"Escherichia coli"</span>, <span class="st">"Staphylococcus aureus"</span>,
|
||
<span class="st">"Streptococcus pneumoniae"</span>, <span class="st">"Klebsiella pneumoniae"</span><span class="op">)</span></code></pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section level3">
|
||
<h3 id="put-everything-together">Put everything together<a class="anchor" aria-label="anchor" href="#put-everything-together"></a>
|
||
</h3>
|
||
<p>Using the <code><a href="https://rdrr.io/r/base/sample.html" class="external-link">sample()</a></code> function, we can randomly select
|
||
items from all objects we defined earlier. To let our fake data reflect
|
||
reality a bit, we will also approximately define the probabilities of
|
||
bacteria and the antibiotic results, using the <code><a href="../reference/random.html">random_rsi()</a></code>
|
||
function.</p>
|
||
<div class="sourceCode" id="cb6"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">sample_size</span> <span class="op"><-</span> <span class="fl">20000</span>
|
||
<span class="va">data</span> <span class="op"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span>date <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/sample.html" class="external-link">sample</a></span><span class="op">(</span><span class="va">dates</span>, size <span class="op">=</span> <span class="va">sample_size</span>, replace <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,
|
||
patient_id <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/sample.html" class="external-link">sample</a></span><span class="op">(</span><span class="va">patients</span>, size <span class="op">=</span> <span class="va">sample_size</span>, replace <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span>,
|
||
hospital <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/sample.html" class="external-link">sample</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"Hospital A"</span>,
|
||
<span class="st">"Hospital B"</span>,
|
||
<span class="st">"Hospital C"</span>,
|
||
<span class="st">"Hospital D"</span><span class="op">)</span>,
|
||
size <span class="op">=</span> <span class="va">sample_size</span>, replace <span class="op">=</span> <span class="cn">TRUE</span>,
|
||
prob <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.30</span>, <span class="fl">0.35</span>, <span class="fl">0.15</span>, <span class="fl">0.20</span><span class="op">)</span><span class="op">)</span>,
|
||
bacteria <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/sample.html" class="external-link">sample</a></span><span class="op">(</span><span class="va">bacteria</span>, size <span class="op">=</span> <span class="va">sample_size</span>, replace <span class="op">=</span> <span class="cn">TRUE</span>,
|
||
prob <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.50</span>, <span class="fl">0.25</span>, <span class="fl">0.15</span>, <span class="fl">0.10</span><span class="op">)</span><span class="op">)</span>,
|
||
AMX <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_rsi</a></span><span class="op">(</span><span class="va">sample_size</span>, prob_RSI <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.35</span>, <span class="fl">0.60</span>, <span class="fl">0.05</span><span class="op">)</span><span class="op">)</span>,
|
||
AMC <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_rsi</a></span><span class="op">(</span><span class="va">sample_size</span>, prob_RSI <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.15</span>, <span class="fl">0.75</span>, <span class="fl">0.10</span><span class="op">)</span><span class="op">)</span>,
|
||
CIP <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_rsi</a></span><span class="op">(</span><span class="va">sample_size</span>, prob_RSI <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.20</span>, <span class="fl">0.80</span>, <span class="fl">0.00</span><span class="op">)</span><span class="op">)</span>,
|
||
GEN <span class="op">=</span> <span class="fu"><a href="../reference/random.html">random_rsi</a></span><span class="op">(</span><span class="va">sample_size</span>, prob_RSI <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.08</span>, <span class="fl">0.92</span>, <span class="fl">0.00</span><span class="op">)</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<p>Using the <code><a href="https://dplyr.tidyverse.org/reference/mutate-joins.html" class="external-link">left_join()</a></code> function from the
|
||
<code>dplyr</code> package, we can ‘map’ the gender to the patient ID
|
||
using the <code>patients_table</code> object we created earlier:</p>
|
||
<div class="sourceCode" id="cb7"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data</span> <span class="op"><-</span> <span class="va">data</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/mutate-joins.html" class="external-link">left_join</a></span><span class="op">(</span><span class="va">patients_table</span><span class="op">)</span></code></pre></div>
|
||
<p>The resulting data set contains 20,000 blood culture isolates. With
|
||
the <code><a href="https://rdrr.io/r/utils/head.html" class="external-link">head()</a></code> function we can preview the first 6 rows of this
|
||
data set:</p>
|
||
<div class="sourceCode" id="cb8"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="fu"><a href="https://rdrr.io/r/utils/head.html" class="external-link">head</a></span><span class="op">(</span><span class="va">data</span><span class="op">)</span></code></pre></div>
|
||
<table class="table">
|
||
<colgroup>
|
||
<col width="13%">
|
||
<col width="13%">
|
||
<col width="13%">
|
||
<col width="26%">
|
||
<col width="5%">
|
||
<col width="5%">
|
||
<col width="5%">
|
||
<col width="5%">
|
||
<col width="9%">
|
||
</colgroup>
|
||
<thead><tr class="header">
|
||
<th align="center">date</th>
|
||
<th align="center">patient_id</th>
|
||
<th align="center">hospital</th>
|
||
<th align="center">bacteria</th>
|
||
<th align="center">AMX</th>
|
||
<th align="center">AMC</th>
|
||
<th align="center">CIP</th>
|
||
<th align="center">GEN</th>
|
||
<th align="center">gender</th>
|
||
</tr></thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td align="center">2012-05-19</td>
|
||
<td align="center">T9</td>
|
||
<td align="center">Hospital D</td>
|
||
<td align="center">Escherichia coli</td>
|
||
<td align="center">I</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">F</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">2014-09-16</td>
|
||
<td align="center">D6</td>
|
||
<td align="center">Hospital C</td>
|
||
<td align="center">Klebsiella pneumoniae</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">R</td>
|
||
<td align="center">S</td>
|
||
<td align="center">M</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="center">2017-03-16</td>
|
||
<td align="center">D10</td>
|
||
<td align="center">Hospital C</td>
|
||
<td align="center">Escherichia coli</td>
|
||
<td align="center">S</td>
|
||
<td align="center">I</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">M</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">2014-05-04</td>
|
||
<td align="center">S5</td>
|
||
<td align="center">Hospital B</td>
|
||
<td align="center">Staphylococcus aureus</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">F</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="center">2011-06-06</td>
|
||
<td align="center">N10</td>
|
||
<td align="center">Hospital B</td>
|
||
<td align="center">Staphylococcus aureus</td>
|
||
<td align="center">I</td>
|
||
<td align="center">I</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">F</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">2016-05-12</td>
|
||
<td align="center">R3</td>
|
||
<td align="center">Hospital D</td>
|
||
<td align="center">Klebsiella pneumoniae</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">F</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>Now, let’s start the cleaning and the analysis!</p>
|
||
</div>
|
||
</div>
|
||
<div class="section level2">
|
||
<h2 id="cleaning-the-data">Cleaning the data<a class="anchor" aria-label="anchor" href="#cleaning-the-data"></a>
|
||
</h2>
|
||
<p>We also created a package dedicated to data cleaning and checking,
|
||
called the <code>cleaner</code> package. It <code><a href="https://rdrr.io/pkg/cleaner/man/freq.html" class="external-link">freq()</a></code> function
|
||
can be used to create frequency tables.</p>
|
||
<p>For example, for the <code>gender</code> variable:</p>
|
||
<div class="sourceCode" id="cb9"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="fu"><a href="https://rdrr.io/pkg/cleaner/man/freq.html" class="external-link">freq</a></span><span class="op">(</span><span class="va">gender</span><span class="op">)</span></code></pre></div>
|
||
<p><strong>Frequency table</strong></p>
|
||
<p>Class: character<br>
|
||
Length: 20,000<br>
|
||
Available: 20,000 (100%, NA: 0 = 0%)<br>
|
||
Unique: 2</p>
|
||
<p>Shortest: 1<br>
|
||
Longest: 1</p>
|
||
<table class="table">
|
||
<thead><tr class="header">
|
||
<th align="left"></th>
|
||
<th align="left">Item</th>
|
||
<th align="right">Count</th>
|
||
<th align="right">Percent</th>
|
||
<th align="right">Cum. Count</th>
|
||
<th align="right">Cum. Percent</th>
|
||
</tr></thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td align="left">1</td>
|
||
<td align="left">M</td>
|
||
<td align="right">10,452</td>
|
||
<td align="right">52.26%</td>
|
||
<td align="right">10,452</td>
|
||
<td align="right">52.26%</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="left">2</td>
|
||
<td align="left">F</td>
|
||
<td align="right">9,548</td>
|
||
<td align="right">47.74%</td>
|
||
<td align="right">20,000</td>
|
||
<td align="right">100.00%</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>So, we can draw at least two conclusions immediately. From a data
|
||
scientists perspective, the data looks clean: only values <code>M</code>
|
||
and <code>F</code>. From a researchers perspective: there are slightly
|
||
more men. Nothing we didn’t already know.</p>
|
||
<p>The data is already quite clean, but we still need to transform some
|
||
variables. The <code>bacteria</code> column now consists of text, and we
|
||
want to add more variables based on microbial IDs later on. So, we will
|
||
transform this column to valid IDs. The <code><a href="https://dplyr.tidyverse.org/reference/mutate.html" class="external-link">mutate()</a></code> function
|
||
of the <code>dplyr</code> package makes this really easy:</p>
|
||
<div class="sourceCode" id="cb10"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data</span> <span class="op"><-</span> <span class="va">data</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/mutate.html" class="external-link">mutate</a></span><span class="op">(</span>bacteria <span class="op">=</span> <span class="fu"><a href="../reference/as.mo.html">as.mo</a></span><span class="op">(</span><span class="va">bacteria</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<p>We also want to transform the antibiotics, because in real life data
|
||
we don’t know if they are really clean. The <code><a href="../reference/as.rsi.html">as.rsi()</a></code>
|
||
function ensures reliability and reproducibility in these kind of
|
||
variables. The <code><a href="../reference/as.rsi.html">is.rsi.eligible()</a></code> can check which columns
|
||
are probably columns with R/SI test results. Using <code><a href="https://dplyr.tidyverse.org/reference/mutate.html" class="external-link">mutate()</a></code>
|
||
and <code><a href="https://dplyr.tidyverse.org/reference/across.html" class="external-link">across()</a></code>, we can apply the transformation to the formal
|
||
<code><rsi></code> class:</p>
|
||
<div class="sourceCode" id="cb11"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="fu"><a href="../reference/as.rsi.html">is.rsi.eligible</a></span><span class="op">(</span><span class="va">data</span><span class="op">)</span>
|
||
<span class="co"># [1] FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE</span>
|
||
<span class="fu"><a href="https://rdrr.io/r/base/colnames.html" class="external-link">colnames</a></span><span class="op">(</span><span class="va">data</span><span class="op">)</span><span class="op">[</span><span class="fu"><a href="../reference/as.rsi.html">is.rsi.eligible</a></span><span class="op">(</span><span class="va">data</span><span class="op">)</span><span class="op">]</span>
|
||
<span class="co"># [1] "AMX" "AMC" "CIP" "GEN"</span>
|
||
|
||
<span class="va">data</span> <span class="op"><-</span> <span class="va">data</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/mutate.html" class="external-link">mutate</a></span><span class="op">(</span><span class="fu"><a href="https://dplyr.tidyverse.org/reference/across.html" class="external-link">across</a></span><span class="op">(</span><span class="fu">where</span><span class="op">(</span><span class="va">is.rsi.eligible</span><span class="op">)</span>, <span class="va">as.rsi</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<p>Finally, we will apply <a href="https://www.eucast.org/expert_rules_and_intrinsic_resistance/" class="external-link">EUCAST
|
||
rules</a> on our antimicrobial results. In Europe, most medical
|
||
microbiological laboratories already apply these rules. Our package
|
||
features their latest insights on intrinsic resistance and exceptional
|
||
phenotypes. Moreover, the <code><a href="../reference/eucast_rules.html">eucast_rules()</a></code> function can also
|
||
apply additional rules, like forcing
|
||
<help title="ATC: J01CA01">ampicillin</help> = R when
|
||
<help title="ATC: J01CR02">amoxicillin/clavulanic acid</help> = R.</p>
|
||
<p>Because the amoxicillin (column <code>AMX</code>) and
|
||
amoxicillin/clavulanic acid (column <code>AMC</code>) in our data were
|
||
generated randomly, some rows will undoubtedly contain AMX = S and AMC =
|
||
R, which is technically impossible. The <code><a href="../reference/eucast_rules.html">eucast_rules()</a></code>
|
||
fixes this:</p>
|
||
<div class="sourceCode" id="cb12"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data</span> <span class="op"><-</span> <span class="fu"><a href="../reference/eucast_rules.html">eucast_rules</a></span><span class="op">(</span><span class="va">data</span>, col_mo <span class="op">=</span> <span class="st">"bacteria"</span>, rules <span class="op">=</span> <span class="st">"all"</span><span class="op">)</span></code></pre></div>
|
||
</div>
|
||
<div class="section level2">
|
||
<h2 id="adding-new-variables">Adding new variables<a class="anchor" aria-label="anchor" href="#adding-new-variables"></a>
|
||
</h2>
|
||
<p>Now that we have the microbial ID, we can add some taxonomic
|
||
properties:</p>
|
||
<div class="sourceCode" id="cb13"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data</span> <span class="op"><-</span> <span class="va">data</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/mutate.html" class="external-link">mutate</a></span><span class="op">(</span>gramstain <span class="op">=</span> <span class="fu"><a href="../reference/mo_property.html">mo_gramstain</a></span><span class="op">(</span><span class="va">bacteria</span><span class="op">)</span>,
|
||
genus <span class="op">=</span> <span class="fu"><a href="../reference/mo_property.html">mo_genus</a></span><span class="op">(</span><span class="va">bacteria</span><span class="op">)</span>,
|
||
species <span class="op">=</span> <span class="fu"><a href="../reference/mo_property.html">mo_species</a></span><span class="op">(</span><span class="va">bacteria</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<div class="section level3">
|
||
<h3 id="first-isolates">First isolates<a class="anchor" aria-label="anchor" href="#first-isolates"></a>
|
||
</h3>
|
||
<p>We also need to know which isolates we can <em>actually</em> use for
|
||
analysis.</p>
|
||
<p>To conduct an analysis of antimicrobial resistance, you must <a href="https:/pubmed.ncbi.nlm.nih.gov/17304462/">only include the first
|
||
isolate of every patient per episode</a> (Hindler <em>et al.</em>, Clin
|
||
Infect Dis. 2007). If you would not do this, you could easily get an
|
||
overestimate or underestimate of the resistance of an antibiotic.
|
||
Imagine that a patient was admitted with an MRSA and that it was found
|
||
in 5 different blood cultures the following weeks (yes, some countries
|
||
like the Netherlands have these blood drawing policies). The resistance
|
||
percentage of oxacillin of all isolates would be overestimated, because
|
||
you included this MRSA more than once. It would clearly be <a href="https://en.wikipedia.org/wiki/Selection_bias" class="external-link">selection
|
||
bias</a>.</p>
|
||
<p>The Clinical and Laboratory Standards Institute (CLSI) appoints this
|
||
as follows:</p>
|
||
<blockquote>
|
||
<p><em>(…) When preparing a cumulative antibiogram to guide clinical
|
||
decisions about empirical antimicrobial therapy of initial infections,
|
||
<strong>only the first isolate of a given species per patient, per
|
||
analysis period (eg, one year) should be included, irrespective of body
|
||
site, antimicrobial susceptibility profile, or other phenotypical
|
||
characteristics (eg, biotype)</strong>. The first isolate is easily
|
||
identified, and cumulative antimicrobial susceptibility test data
|
||
prepared using the first isolate are generally comparable to cumulative
|
||
antimicrobial susceptibility test data calculated by other methods,
|
||
providing duplicate isolates are excluded.</em> <br><a href="https://clsi.org/standards/products/microbiology/documents/m39/" class="external-link">M39-A4
|
||
Analysis and Presentation of Cumulative Antimicrobial Susceptibility
|
||
Test Data, 4th Edition. CLSI, 2014. Chapter 6.4</a></p>
|
||
</blockquote>
|
||
<p>This <code>AMR</code> package includes this methodology with the
|
||
<code><a href="../reference/first_isolate.html">first_isolate()</a></code> function and is able to apply the four
|
||
different methods as defined by <a href="https://academic.oup.com/cid/article/44/6/867/364325" class="external-link">Hindler
|
||
<em>et al.</em> in 2007</a>: phenotype-based, episode-based,
|
||
patient-based, isolate-based. The right method depends on your goals and
|
||
analysis, but the default phenotype-based method is in any case the
|
||
method to properly correct for most duplicate isolates. This method also
|
||
takes into account the antimicrobial susceptibility test results using
|
||
<code>all_microbials()</code>. Read more about the methods on the
|
||
<code><a href="../reference/first_isolate.html">first_isolate()</a></code> page.</p>
|
||
<p>The outcome of the function can easily be added to our data:</p>
|
||
<div class="sourceCode" id="cb14"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data</span> <span class="op"><-</span> <span class="va">data</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/mutate.html" class="external-link">mutate</a></span><span class="op">(</span>first <span class="op">=</span> <span class="fu"><a href="../reference/first_isolate.html">first_isolate</a></span><span class="op">(</span>info <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span><span class="op">)</span>
|
||
<span class="co"># Determining first isolates using an episode length of 365 days</span>
|
||
<span class="co"># ℹ Using column 'bacteria' as input for `col_mo`.</span>
|
||
<span class="co"># ℹ Using column 'date' as input for `col_date`.</span>
|
||
<span class="co"># ℹ Using column 'patient_id' as input for `col_patient_id`.</span>
|
||
<span class="co"># Basing inclusion on all antimicrobial results, using a points threshold of</span>
|
||
<span class="co"># 2</span>
|
||
<span class="co"># => Found 10,708 'phenotype-based' first isolates (53.5% of total where a</span>
|
||
<span class="co"># microbial ID was available)</span></code></pre></div>
|
||
<p>So only 53.5% is suitable for resistance analysis! We can now filter
|
||
on it with the <code><a href="https://dplyr.tidyverse.org/reference/filter.html" class="external-link">filter()</a></code> function, also from the
|
||
<code>dplyr</code> package:</p>
|
||
<div class="sourceCode" id="cb15"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data_1st</span> <span class="op"><-</span> <span class="va">data</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/filter.html" class="external-link">filter</a></span><span class="op">(</span><span class="va">first</span> <span class="op">==</span> <span class="cn">TRUE</span><span class="op">)</span></code></pre></div>
|
||
<p>For future use, the above two syntaxes can be shortened:</p>
|
||
<div class="sourceCode" id="cb16"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data_1st</span> <span class="op"><-</span> <span class="va">data</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="../reference/first_isolate.html">filter_first_isolate</a></span><span class="op">(</span><span class="op">)</span></code></pre></div>
|
||
<p>So we end up with 10,708 isolates for analysis. Now our data looks
|
||
like:</p>
|
||
<div class="sourceCode" id="cb17"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="fu"><a href="https://rdrr.io/r/utils/head.html" class="external-link">head</a></span><span class="op">(</span><span class="va">data_1st</span><span class="op">)</span></code></pre></div>
|
||
<table style="width:100%;" class="table">
|
||
<colgroup>
|
||
<col width="2%">
|
||
<col width="9%">
|
||
<col width="9%">
|
||
<col width="9%">
|
||
<col width="10%">
|
||
<col width="3%">
|
||
<col width="3%">
|
||
<col width="3%">
|
||
<col width="3%">
|
||
<col width="6%">
|
||
<col width="11%">
|
||
<col width="12%">
|
||
<col width="9%">
|
||
<col width="5%">
|
||
</colgroup>
|
||
<thead><tr class="header">
|
||
<th align="left"></th>
|
||
<th align="center">date</th>
|
||
<th align="center">patient_id</th>
|
||
<th align="center">hospital</th>
|
||
<th align="center">bacteria</th>
|
||
<th align="center">AMX</th>
|
||
<th align="center">AMC</th>
|
||
<th align="center">CIP</th>
|
||
<th align="center">GEN</th>
|
||
<th align="center">gender</th>
|
||
<th align="center">gramstain</th>
|
||
<th align="center">genus</th>
|
||
<th align="center">species</th>
|
||
<th align="center">first</th>
|
||
</tr></thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td align="left">2</td>
|
||
<td align="center">2014-09-16</td>
|
||
<td align="center">D6</td>
|
||
<td align="center">Hospital C</td>
|
||
<td align="center">B_KLBSL_PNMN</td>
|
||
<td align="center">R</td>
|
||
<td align="center">S</td>
|
||
<td align="center">R</td>
|
||
<td align="center">S</td>
|
||
<td align="center">M</td>
|
||
<td align="center">Gram-negative</td>
|
||
<td align="center">Klebsiella</td>
|
||
<td align="center">pneumoniae</td>
|
||
<td align="center">TRUE</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="left">5</td>
|
||
<td align="center">2011-06-06</td>
|
||
<td align="center">N10</td>
|
||
<td align="center">Hospital B</td>
|
||
<td align="center">B_STPHY_AURS</td>
|
||
<td align="center">I</td>
|
||
<td align="center">I</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">F</td>
|
||
<td align="center">Gram-positive</td>
|
||
<td align="center">Staphylococcus</td>
|
||
<td align="center">aureus</td>
|
||
<td align="center">TRUE</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="left">6</td>
|
||
<td align="center">2016-05-12</td>
|
||
<td align="center">R3</td>
|
||
<td align="center">Hospital D</td>
|
||
<td align="center">B_KLBSL_PNMN</td>
|
||
<td align="center">R</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">F</td>
|
||
<td align="center">Gram-negative</td>
|
||
<td align="center">Klebsiella</td>
|
||
<td align="center">pneumoniae</td>
|
||
<td align="center">TRUE</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="left">8</td>
|
||
<td align="center">2010-02-19</td>
|
||
<td align="center">U1</td>
|
||
<td align="center">Hospital D</td>
|
||
<td align="center">B_ESCHR_COLI</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">R</td>
|
||
<td align="center">S</td>
|
||
<td align="center">F</td>
|
||
<td align="center">Gram-negative</td>
|
||
<td align="center">Escherichia</td>
|
||
<td align="center">coli</td>
|
||
<td align="center">TRUE</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="left">11</td>
|
||
<td align="center">2012-02-09</td>
|
||
<td align="center">G7</td>
|
||
<td align="center">Hospital D</td>
|
||
<td align="center">B_STPHY_AURS</td>
|
||
<td align="center">R</td>
|
||
<td align="center">R</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">M</td>
|
||
<td align="center">Gram-positive</td>
|
||
<td align="center">Staphylococcus</td>
|
||
<td align="center">aureus</td>
|
||
<td align="center">TRUE</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="left">12</td>
|
||
<td align="center">2012-04-12</td>
|
||
<td align="center">Q10</td>
|
||
<td align="center">Hospital D</td>
|
||
<td align="center">B_STRPT_PNMN</td>
|
||
<td align="center">R</td>
|
||
<td align="center">R</td>
|
||
<td align="center">S</td>
|
||
<td align="center">R</td>
|
||
<td align="center">F</td>
|
||
<td align="center">Gram-positive</td>
|
||
<td align="center">Streptococcus</td>
|
||
<td align="center">pneumoniae</td>
|
||
<td align="center">TRUE</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>Time for the analysis!</p>
|
||
</div>
|
||
</div>
|
||
<div class="section level2">
|
||
<h2 id="analysing-the-data">Analysing the data<a class="anchor" aria-label="anchor" href="#analysing-the-data"></a>
|
||
</h2>
|
||
<p>You might want to start by getting an idea of how the data is
|
||
distributed. It’s an important start, because it also decides how you
|
||
will continue your analysis. Although this package contains a convenient
|
||
function to make frequency tables, exploratory data analysis (EDA) is
|
||
not the primary scope of this package. Use a package like <a href="https://cran.r-project.org/package=DataExplorer" class="external-link"><code>DataExplorer</code></a>
|
||
for that, or read the free online book <a href="https://bookdown.org/rdpeng/exdata/" class="external-link">Exploratory Data Analysis
|
||
with R</a> by Roger D. Peng.</p>
|
||
<div class="section level3">
|
||
<h3 id="dispersion-of-species">Dispersion of species<a class="anchor" aria-label="anchor" href="#dispersion-of-species"></a>
|
||
</h3>
|
||
<p>To just get an idea how the species are distributed, create a
|
||
frequency table with our <code><a href="https://rdrr.io/pkg/cleaner/man/freq.html" class="external-link">freq()</a></code> function. We created the
|
||
<code>genus</code> and <code>species</code> column earlier based on the
|
||
microbial ID. With <code><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste()</a></code>, we can concatenate them
|
||
together.</p>
|
||
<p>The <code><a href="https://rdrr.io/pkg/cleaner/man/freq.html" class="external-link">freq()</a></code> function can be used like the base R language
|
||
was intended:</p>
|
||
<div class="sourceCode" id="cb18"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="fu"><a href="https://rdrr.io/pkg/cleaner/man/freq.html" class="external-link">freq</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/paste.html" class="external-link">paste</a></span><span class="op">(</span><span class="va">data_1st</span><span class="op">$</span><span class="va">genus</span>, <span class="va">data_1st</span><span class="op">$</span><span class="va">species</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<p>Or can be used like the <code>dplyr</code> way, which is easier
|
||
readable:</p>
|
||
<div class="sourceCode" id="cb19"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data_1st</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="fu"><a href="https://rdrr.io/pkg/cleaner/man/freq.html" class="external-link">freq</a></span><span class="op">(</span><span class="va">genus</span>, <span class="va">species</span><span class="op">)</span></code></pre></div>
|
||
<p><strong>Frequency table</strong></p>
|
||
<p>Class: character<br>
|
||
Length: 10,708<br>
|
||
Available: 10,708 (100%, NA: 0 = 0%)<br>
|
||
Unique: 4</p>
|
||
<p>Shortest: 16<br>
|
||
Longest: 24</p>
|
||
<table class="table">
|
||
<colgroup>
|
||
<col width="4%">
|
||
<col width="36%">
|
||
<col width="9%">
|
||
<col width="12%">
|
||
<col width="16%">
|
||
<col width="19%">
|
||
</colgroup>
|
||
<thead><tr class="header">
|
||
<th align="left"></th>
|
||
<th align="left">Item</th>
|
||
<th align="right">Count</th>
|
||
<th align="right">Percent</th>
|
||
<th align="right">Cum. Count</th>
|
||
<th align="right">Cum. Percent</th>
|
||
</tr></thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td align="left">1</td>
|
||
<td align="left">Escherichia coli</td>
|
||
<td align="right">4,664</td>
|
||
<td align="right">43.56%</td>
|
||
<td align="right">4,664</td>
|
||
<td align="right">43.56%</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="left">2</td>
|
||
<td align="left">Staphylococcus aureus</td>
|
||
<td align="right">2,713</td>
|
||
<td align="right">25.34%</td>
|
||
<td align="right">7,377</td>
|
||
<td align="right">68.89%</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="left">3</td>
|
||
<td align="left">Streptococcus pneumoniae</td>
|
||
<td align="right">2,154</td>
|
||
<td align="right">20.12%</td>
|
||
<td align="right">9,531</td>
|
||
<td align="right">89.01%</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="left">4</td>
|
||
<td align="left">Klebsiella pneumoniae</td>
|
||
<td align="right">1,177</td>
|
||
<td align="right">10.99%</td>
|
||
<td align="right">10,708</td>
|
||
<td align="right">100.00%</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="section level3">
|
||
<h3 id="overview-of-different-bugdrug-combinations">Overview of different bug/drug combinations<a class="anchor" aria-label="anchor" href="#overview-of-different-bugdrug-combinations"></a>
|
||
</h3>
|
||
<p>Using <a href="https://tidyselect.r-lib.org/reference/language.html" class="external-link">tidyverse
|
||
selections</a>, you can also select or filter columns based on the
|
||
antibiotic class they are in:</p>
|
||
<div class="sourceCode" id="cb20"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data_1st</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/filter.html" class="external-link">filter</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/any.html" class="external-link">any</a></span><span class="op">(</span><span class="fu"><a href="../reference/antibiotic_class_selectors.html">aminoglycosides</a></span><span class="op">(</span><span class="op">)</span> <span class="op">==</span> <span class="st">"R"</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<pre><code><span class="co"># ℹ For `aminoglycosides()` using column 'GEN' (gentamicin)</span></code></pre>
|
||
<table class="table">
|
||
<colgroup>
|
||
<col width="9%">
|
||
<col width="9%">
|
||
<col width="9%">
|
||
<col width="11%">
|
||
<col width="3%">
|
||
<col width="3%">
|
||
<col width="3%">
|
||
<col width="3%">
|
||
<col width="6%">
|
||
<col width="11%">
|
||
<col width="11%">
|
||
<col width="9%">
|
||
<col width="5%">
|
||
</colgroup>
|
||
<thead><tr class="header">
|
||
<th align="center">date</th>
|
||
<th align="center">patient_id</th>
|
||
<th align="center">hospital</th>
|
||
<th align="center">bacteria</th>
|
||
<th align="center">AMX</th>
|
||
<th align="center">AMC</th>
|
||
<th align="center">CIP</th>
|
||
<th align="center">GEN</th>
|
||
<th align="center">gender</th>
|
||
<th align="center">gramstain</th>
|
||
<th align="center">genus</th>
|
||
<th align="center">species</th>
|
||
<th align="center">first</th>
|
||
</tr></thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td align="center">2012-04-12</td>
|
||
<td align="center">Q10</td>
|
||
<td align="center">Hospital D</td>
|
||
<td align="center">B_STRPT_PNMN</td>
|
||
<td align="center">R</td>
|
||
<td align="center">R</td>
|
||
<td align="center">S</td>
|
||
<td align="center">R</td>
|
||
<td align="center">F</td>
|
||
<td align="center">Gram-positive</td>
|
||
<td align="center">Streptococcus</td>
|
||
<td align="center">pneumoniae</td>
|
||
<td align="center">TRUE</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">2011-03-17</td>
|
||
<td align="center">Z4</td>
|
||
<td align="center">Hospital C</td>
|
||
<td align="center">B_STRPT_PNMN</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">R</td>
|
||
<td align="center">R</td>
|
||
<td align="center">F</td>
|
||
<td align="center">Gram-positive</td>
|
||
<td align="center">Streptococcus</td>
|
||
<td align="center">pneumoniae</td>
|
||
<td align="center">TRUE</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="center">2010-09-07</td>
|
||
<td align="center">P9</td>
|
||
<td align="center">Hospital B</td>
|
||
<td align="center">B_ESCHR_COLI</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">R</td>
|
||
<td align="center">R</td>
|
||
<td align="center">F</td>
|
||
<td align="center">Gram-negative</td>
|
||
<td align="center">Escherichia</td>
|
||
<td align="center">coli</td>
|
||
<td align="center">TRUE</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">2013-08-06</td>
|
||
<td align="center">Z6</td>
|
||
<td align="center">Hospital A</td>
|
||
<td align="center">B_ESCHR_COLI</td>
|
||
<td align="center">R</td>
|
||
<td align="center">R</td>
|
||
<td align="center">S</td>
|
||
<td align="center">R</td>
|
||
<td align="center">F</td>
|
||
<td align="center">Gram-negative</td>
|
||
<td align="center">Escherichia</td>
|
||
<td align="center">coli</td>
|
||
<td align="center">TRUE</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="center">2017-02-20</td>
|
||
<td align="center">K5</td>
|
||
<td align="center">Hospital D</td>
|
||
<td align="center">B_ESCHR_COLI</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">R</td>
|
||
<td align="center">M</td>
|
||
<td align="center">Gram-negative</td>
|
||
<td align="center">Escherichia</td>
|
||
<td align="center">coli</td>
|
||
<td align="center">TRUE</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">2015-08-23</td>
|
||
<td align="center">G1</td>
|
||
<td align="center">Hospital A</td>
|
||
<td align="center">B_STRPT_PNMN</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">S</td>
|
||
<td align="center">R</td>
|
||
<td align="center">M</td>
|
||
<td align="center">Gram-positive</td>
|
||
<td align="center">Streptococcus</td>
|
||
<td align="center">pneumoniae</td>
|
||
<td align="center">TRUE</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>If you want to get a quick glance of the number of isolates in
|
||
different bug/drug combinations, you can use the
|
||
<code><a href="../reference/bug_drug_combinations.html">bug_drug_combinations()</a></code> function:</p>
|
||
<div class="sourceCode" id="cb22"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data_1st</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="../reference/bug_drug_combinations.html">bug_drug_combinations</a></span><span class="op">(</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://rdrr.io/r/utils/head.html" class="external-link">head</a></span><span class="op">(</span><span class="op">)</span> <span class="co"># show first 6 rows</span></code></pre></div>
|
||
<pre><code><span class="co"># ℹ Using column 'bacteria' as input for `col_mo`.</span></code></pre>
|
||
<table class="table">
|
||
<thead><tr class="header">
|
||
<th align="center">mo</th>
|
||
<th align="center">ab</th>
|
||
<th align="center">S</th>
|
||
<th align="center">I</th>
|
||
<th align="center">R</th>
|
||
<th align="center">total</th>
|
||
</tr></thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td align="center">E. coli</td>
|
||
<td align="center">AMX</td>
|
||
<td align="center">2171</td>
|
||
<td align="center">132</td>
|
||
<td align="center">2361</td>
|
||
<td align="center">4664</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">E. coli</td>
|
||
<td align="center">AMC</td>
|
||
<td align="center">3389</td>
|
||
<td align="center">168</td>
|
||
<td align="center">1107</td>
|
||
<td align="center">4664</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="center">E. coli</td>
|
||
<td align="center">CIP</td>
|
||
<td align="center">3428</td>
|
||
<td align="center">0</td>
|
||
<td align="center">1236</td>
|
||
<td align="center">4664</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">E. coli</td>
|
||
<td align="center">GEN</td>
|
||
<td align="center">4083</td>
|
||
<td align="center">0</td>
|
||
<td align="center">581</td>
|
||
<td align="center">4664</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="center">K. pneumoniae</td>
|
||
<td align="center">AMX</td>
|
||
<td align="center">0</td>
|
||
<td align="center">0</td>
|
||
<td align="center">1177</td>
|
||
<td align="center">1177</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">K. pneumoniae</td>
|
||
<td align="center">AMC</td>
|
||
<td align="center">935</td>
|
||
<td align="center">30</td>
|
||
<td align="center">212</td>
|
||
<td align="center">1177</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<div class="sourceCode" id="cb24"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data_1st</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/select.html" class="external-link">select</a></span><span class="op">(</span><span class="va">bacteria</span>, <span class="fu"><a href="../reference/antibiotic_class_selectors.html">aminoglycosides</a></span><span class="op">(</span><span class="op">)</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="../reference/bug_drug_combinations.html">bug_drug_combinations</a></span><span class="op">(</span><span class="op">)</span></code></pre></div>
|
||
<pre><code><span class="co"># ℹ For `aminoglycosides()` using column 'GEN' (gentamicin)</span>
|
||
<span class="co"># ℹ Using column 'bacteria' as input for `col_mo`.</span></code></pre>
|
||
<table class="table">
|
||
<thead><tr class="header">
|
||
<th align="center">mo</th>
|
||
<th align="center">ab</th>
|
||
<th align="center">S</th>
|
||
<th align="center">I</th>
|
||
<th align="center">R</th>
|
||
<th align="center">total</th>
|
||
</tr></thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td align="center">E. coli</td>
|
||
<td align="center">GEN</td>
|
||
<td align="center">4083</td>
|
||
<td align="center">0</td>
|
||
<td align="center">581</td>
|
||
<td align="center">4664</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">K. pneumoniae</td>
|
||
<td align="center">GEN</td>
|
||
<td align="center">1074</td>
|
||
<td align="center">0</td>
|
||
<td align="center">103</td>
|
||
<td align="center">1177</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="center">S. aureus</td>
|
||
<td align="center">GEN</td>
|
||
<td align="center">2426</td>
|
||
<td align="center">0</td>
|
||
<td align="center">287</td>
|
||
<td align="center">2713</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">S. pneumoniae</td>
|
||
<td align="center">GEN</td>
|
||
<td align="center">0</td>
|
||
<td align="center">0</td>
|
||
<td align="center">2154</td>
|
||
<td align="center">2154</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>This will only give you the crude numbers in the data. To calculate
|
||
antimicrobial resistance in a more sensible way, also by correcting for
|
||
too few results, we use the <code><a href="../reference/proportion.html">resistance()</a></code> and
|
||
<code><a href="../reference/proportion.html">susceptibility()</a></code> functions.</p>
|
||
</div>
|
||
<div class="section level3">
|
||
<h3 id="resistance-percentages">Resistance percentages<a class="anchor" aria-label="anchor" href="#resistance-percentages"></a>
|
||
</h3>
|
||
<p>The functions <code><a href="../reference/proportion.html">resistance()</a></code> and
|
||
<code><a href="../reference/proportion.html">susceptibility()</a></code> can be used to calculate antimicrobial
|
||
resistance or susceptibility. For more specific analyses, the functions
|
||
<code><a href="../reference/proportion.html">proportion_S()</a></code>, <code><a href="../reference/proportion.html">proportion_SI()</a></code>,
|
||
<code><a href="../reference/proportion.html">proportion_I()</a></code>, <code><a href="../reference/proportion.html">proportion_IR()</a></code> and
|
||
<code><a href="../reference/proportion.html">proportion_R()</a></code> can be used to determine the proportion of a
|
||
specific antimicrobial outcome.</p>
|
||
<p>All these functions contain a <code>minimum</code> argument, denoting
|
||
the minimum required number of test results for returning a value. These
|
||
functions will otherwise return <code>NA</code>. The default is
|
||
<code>minimum = 30</code>, following the <a href="https://clsi.org/standards/products/microbiology/documents/m39/" class="external-link">CLSI
|
||
M39-A4 guideline</a> for applying microbial epidemiology.</p>
|
||
<p>As per the EUCAST guideline of 2019, we calculate resistance as the
|
||
proportion of R (<code><a href="../reference/proportion.html">proportion_R()</a></code>, equal to
|
||
<code><a href="../reference/proportion.html">resistance()</a></code>) and susceptibility as the proportion of S and
|
||
I (<code><a href="../reference/proportion.html">proportion_SI()</a></code>, equal to
|
||
<code><a href="../reference/proportion.html">susceptibility()</a></code>). These functions can be used on their
|
||
own:</p>
|
||
<div class="sourceCode" id="cb26"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data_1st</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="fu"><a href="../reference/proportion.html">resistance</a></span><span class="op">(</span><span class="va">AMX</span><span class="op">)</span>
|
||
<span class="co"># [1] 0.5473478</span></code></pre></div>
|
||
<p>Or can be used in conjunction with <code><a href="https://dplyr.tidyverse.org/reference/group_by.html" class="external-link">group_by()</a></code> and
|
||
<code><a href="https://dplyr.tidyverse.org/reference/summarise.html" class="external-link">summarise()</a></code>, both from the <code>dplyr</code> package:</p>
|
||
<div class="sourceCode" id="cb27"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data_1st</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/group_by.html" class="external-link">group_by</a></span><span class="op">(</span><span class="va">hospital</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/summarise.html" class="external-link">summarise</a></span><span class="op">(</span>amoxicillin <span class="op">=</span> <span class="fu"><a href="../reference/proportion.html">resistance</a></span><span class="op">(</span><span class="va">AMX</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<table class="table">
|
||
<thead><tr class="header">
|
||
<th align="center">hospital</th>
|
||
<th align="center">amoxicillin</th>
|
||
</tr></thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td align="center">Hospital A</td>
|
||
<td align="center">0.5482456</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">Hospital B</td>
|
||
<td align="center">0.5499477</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="center">Hospital C</td>
|
||
<td align="center">0.5403687</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">Hospital D</td>
|
||
<td align="center">0.5464842</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>Of course it would be very convenient to know the number of isolates
|
||
responsible for the percentages. For that purpose the
|
||
<code><a href="../reference/count.html">n_rsi()</a></code> can be used, which works exactly like
|
||
<code><a href="https://dplyr.tidyverse.org/reference/n_distinct.html" class="external-link">n_distinct()</a></code> from the <code>dplyr</code> package. It counts
|
||
all isolates available for every group (i.e. values S, I or R):</p>
|
||
<div class="sourceCode" id="cb28"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data_1st</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/group_by.html" class="external-link">group_by</a></span><span class="op">(</span><span class="va">hospital</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/summarise.html" class="external-link">summarise</a></span><span class="op">(</span>amoxicillin <span class="op">=</span> <span class="fu"><a href="../reference/proportion.html">resistance</a></span><span class="op">(</span><span class="va">AMX</span><span class="op">)</span>,
|
||
available <span class="op">=</span> <span class="fu"><a href="../reference/count.html">n_rsi</a></span><span class="op">(</span><span class="va">AMX</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<table class="table">
|
||
<thead><tr class="header">
|
||
<th align="center">hospital</th>
|
||
<th align="center">amoxicillin</th>
|
||
<th align="center">available</th>
|
||
</tr></thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td align="center">Hospital A</td>
|
||
<td align="center">0.5482456</td>
|
||
<td align="center">3192</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">Hospital B</td>
|
||
<td align="center">0.5499477</td>
|
||
<td align="center">3824</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="center">Hospital C</td>
|
||
<td align="center">0.5403687</td>
|
||
<td align="center">1573</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">Hospital D</td>
|
||
<td align="center">0.5464842</td>
|
||
<td align="center">2119</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>These functions can also be used to get the proportion of multiple
|
||
antibiotics, to calculate empiric susceptibility of combination
|
||
therapies very easily:</p>
|
||
<div class="sourceCode" id="cb29"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data_1st</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/group_by.html" class="external-link">group_by</a></span><span class="op">(</span><span class="va">genus</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/summarise.html" class="external-link">summarise</a></span><span class="op">(</span>amoxiclav <span class="op">=</span> <span class="fu"><a href="../reference/proportion.html">susceptibility</a></span><span class="op">(</span><span class="va">AMC</span><span class="op">)</span>,
|
||
gentamicin <span class="op">=</span> <span class="fu"><a href="../reference/proportion.html">susceptibility</a></span><span class="op">(</span><span class="va">GEN</span><span class="op">)</span>,
|
||
amoxiclav_genta <span class="op">=</span> <span class="fu"><a href="../reference/proportion.html">susceptibility</a></span><span class="op">(</span><span class="va">AMC</span>, <span class="va">GEN</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<table class="table">
|
||
<thead><tr class="header">
|
||
<th align="center">genus</th>
|
||
<th align="center">amoxiclav</th>
|
||
<th align="center">gentamicin</th>
|
||
<th align="center">amoxiclav_genta</th>
|
||
</tr></thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td align="center">Escherichia</td>
|
||
<td align="center">0.7626501</td>
|
||
<td align="center">0.8754288</td>
|
||
<td align="center">0.9774871</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">Klebsiella</td>
|
||
<td align="center">0.8198811</td>
|
||
<td align="center">0.9124894</td>
|
||
<td align="center">0.9821580</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="center">Staphylococcus</td>
|
||
<td align="center">0.7983782</td>
|
||
<td align="center">0.8942130</td>
|
||
<td align="center">0.9834132</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="center">Streptococcus</td>
|
||
<td align="center">0.5329619</td>
|
||
<td align="center">0.0000000</td>
|
||
<td align="center">0.5329619</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>Or if you are curious for the resistance within certain antibiotic
|
||
classes, use a antibiotic class selector such as
|
||
<code><a href="../reference/antibiotic_class_selectors.html">penicillins()</a></code>, which automatically will include the columns
|
||
<code>AMX</code> and <code>AMC</code> of our data:</p>
|
||
<div class="sourceCode" id="cb30"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data_1st</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="co"># group by hospital</span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/group_by.html" class="external-link">group_by</a></span><span class="op">(</span><span class="va">hospital</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="co"># / -> select all penicillins in the data for calculation</span>
|
||
<span class="co"># | / -> use resistance() for all peni's per hospital</span>
|
||
<span class="co"># | | / -> print as percentages</span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/summarise.html" class="external-link">summarise</a></span><span class="op">(</span><span class="fu"><a href="https://dplyr.tidyverse.org/reference/across.html" class="external-link">across</a></span><span class="op">(</span><span class="fu"><a href="../reference/antibiotic_class_selectors.html">penicillins</a></span><span class="op">(</span><span class="op">)</span>, <span class="va">resistance</span>, as_percent <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="co"># format the antibiotic column names, using so-called snake case,</span>
|
||
<span class="co"># so 'Amoxicillin/clavulanic acid' becomes 'amoxicillin_clavulanic_acid'</span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/rename.html" class="external-link">rename_with</a></span><span class="op">(</span><span class="va">set_ab_names</span>, <span class="fu"><a href="../reference/antibiotic_class_selectors.html">penicillins</a></span><span class="op">(</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<table class="table">
|
||
<thead><tr class="header">
|
||
<th align="left">hospital</th>
|
||
<th align="right">amoxicillin</th>
|
||
<th align="right">amoxicillin_clavulanic_acid</th>
|
||
</tr></thead>
|
||
<tbody>
|
||
<tr class="odd">
|
||
<td align="left">Hospital A</td>
|
||
<td align="right">54.8%</td>
|
||
<td align="right">28.0%</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="left">Hospital B</td>
|
||
<td align="right">55.0%</td>
|
||
<td align="right">26.3%</td>
|
||
</tr>
|
||
<tr class="odd">
|
||
<td align="left">Hospital C</td>
|
||
<td align="right">54.0%</td>
|
||
<td align="right">26.2%</td>
|
||
</tr>
|
||
<tr class="even">
|
||
<td align="left">Hospital D</td>
|
||
<td align="right">54.6%</td>
|
||
<td align="right">26.4%</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>To make a transition to the next part, let’s see how differences in
|
||
the previously calculated combination therapies could be plotted:</p>
|
||
<div class="sourceCode" id="cb31"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data_1st</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/group_by.html" class="external-link">group_by</a></span><span class="op">(</span><span class="va">genus</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/summarise.html" class="external-link">summarise</a></span><span class="op">(</span><span class="st">"1. Amoxi/clav"</span> <span class="op">=</span> <span class="fu"><a href="../reference/proportion.html">susceptibility</a></span><span class="op">(</span><span class="va">AMC</span><span class="op">)</span>,
|
||
<span class="st">"2. Gentamicin"</span> <span class="op">=</span> <span class="fu"><a href="../reference/proportion.html">susceptibility</a></span><span class="op">(</span><span class="va">GEN</span><span class="op">)</span>,
|
||
<span class="st">"3. Amoxi/clav + genta"</span> <span class="op">=</span> <span class="fu"><a href="../reference/proportion.html">susceptibility</a></span><span class="op">(</span><span class="va">AMC</span>, <span class="va">GEN</span><span class="op">)</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="co"># pivot_longer() from the tidyr package "lengthens" data:</span>
|
||
<span class="fu">tidyr</span><span class="fu">::</span><span class="fu"><a href="https://tidyr.tidyverse.org/reference/pivot_longer.html" class="external-link">pivot_longer</a></span><span class="op">(</span><span class="op">-</span><span class="va">genus</span>, names_to <span class="op">=</span> <span class="st">"antibiotic"</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggplot.html" class="external-link">ggplot</a></span><span class="op">(</span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>x <span class="op">=</span> <span class="va">genus</span>,
|
||
y <span class="op">=</span> <span class="va">value</span>,
|
||
fill <span class="op">=</span> <span class="va">antibiotic</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span>
|
||
<span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_bar.html" class="external-link">geom_col</a></span><span class="op">(</span>position <span class="op">=</span> <span class="st">"dodge2"</span><span class="op">)</span></code></pre></div>
|
||
<p><img src="AMR_files/figure-html/plot%201-1.png" width="720"></p>
|
||
</div>
|
||
<div class="section level3">
|
||
<h3 id="plots">Plots<a class="anchor" aria-label="anchor" href="#plots"></a>
|
||
</h3>
|
||
<p>To show results in plots, most R users would nowadays use the
|
||
<code>ggplot2</code> package. This package lets you create plots in
|
||
layers. You can read more about it <a href="https://ggplot2.tidyverse.org/" class="external-link">on their website</a>. A quick
|
||
example would look like these syntaxes:</p>
|
||
<div class="sourceCode" id="cb32"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggplot.html" class="external-link">ggplot</a></span><span class="op">(</span>data <span class="op">=</span> <span class="va">a_data_set</span>,
|
||
mapping <span class="op">=</span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span>x <span class="op">=</span> <span class="va">year</span>,
|
||
y <span class="op">=</span> <span class="va">value</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span>
|
||
<span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_bar.html" class="external-link">geom_col</a></span><span class="op">(</span><span class="op">)</span> <span class="op">+</span>
|
||
<span class="fu"><a href="https://ggplot2.tidyverse.org/reference/labs.html" class="external-link">labs</a></span><span class="op">(</span>title <span class="op">=</span> <span class="st">"A title"</span>,
|
||
subtitle <span class="op">=</span> <span class="st">"A subtitle"</span>,
|
||
x <span class="op">=</span> <span class="st">"My X axis"</span>,
|
||
y <span class="op">=</span> <span class="st">"My Y axis"</span><span class="op">)</span>
|
||
|
||
<span class="co"># or as short as:</span>
|
||
<span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggplot.html" class="external-link">ggplot</a></span><span class="op">(</span><span class="va">a_data_set</span><span class="op">)</span> <span class="op">+</span>
|
||
<span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_bar.html" class="external-link">geom_bar</a></span><span class="op">(</span><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span><span class="va">year</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<p>The <code>AMR</code> package contains functions to extend this
|
||
<code>ggplot2</code> package, for example <code><a href="../reference/ggplot_rsi.html">geom_rsi()</a></code>. It
|
||
automatically transforms data with <code><a href="../reference/count.html">count_df()</a></code> or
|
||
<code><a href="../reference/proportion.html">proportion_df()</a></code> and show results in stacked bars. Its
|
||
simplest and shortest example:</p>
|
||
<div class="sourceCode" id="cb33"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggplot.html" class="external-link">ggplot</a></span><span class="op">(</span><span class="va">data_1st</span><span class="op">)</span> <span class="op">+</span>
|
||
<span class="fu"><a href="../reference/ggplot_rsi.html">geom_rsi</a></span><span class="op">(</span>translate_ab <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span></code></pre></div>
|
||
<p><img src="AMR_files/figure-html/plot%203-1.png" width="720"></p>
|
||
<p>Omit the <code>translate_ab = FALSE</code> to have the antibiotic
|
||
codes (AMX, AMC, CIP, GEN) translated to official WHO names
|
||
(amoxicillin, amoxicillin/clavulanic acid, ciprofloxacin,
|
||
gentamicin).</p>
|
||
<p>If we group on e.g. the <code>genus</code> column and add some
|
||
additional functions from our package, we can create this:</p>
|
||
<div class="sourceCode" id="cb34"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="co"># group the data on `genus`</span>
|
||
<span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggplot.html" class="external-link">ggplot</a></span><span class="op">(</span><span class="va">data_1st</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="fu"><a href="https://dplyr.tidyverse.org/reference/group_by.html" class="external-link">group_by</a></span><span class="op">(</span><span class="va">genus</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span>
|
||
<span class="co"># create bars with genus on x axis</span>
|
||
<span class="co"># it looks for variables with class `rsi`,</span>
|
||
<span class="co"># of which we have 4 (earlier created with `as.rsi`)</span>
|
||
<span class="fu"><a href="../reference/ggplot_rsi.html">geom_rsi</a></span><span class="op">(</span>x <span class="op">=</span> <span class="st">"genus"</span><span class="op">)</span> <span class="op">+</span>
|
||
<span class="co"># split plots on antibiotic</span>
|
||
<span class="fu"><a href="../reference/ggplot_rsi.html">facet_rsi</a></span><span class="op">(</span>facet <span class="op">=</span> <span class="st">"antibiotic"</span><span class="op">)</span> <span class="op">+</span>
|
||
<span class="co"># set colours to the R/SI interpretations (colour-blind friendly)</span>
|
||
<span class="fu"><a href="../reference/ggplot_rsi.html">scale_rsi_colours</a></span><span class="op">(</span><span class="op">)</span> <span class="op">+</span>
|
||
<span class="co"># show percentages on y axis</span>
|
||
<span class="fu"><a href="../reference/ggplot_rsi.html">scale_y_percent</a></span><span class="op">(</span>breaks <span class="op">=</span> <span class="fl">0</span><span class="op">:</span><span class="fl">4</span> <span class="op">*</span> <span class="fl">25</span><span class="op">)</span> <span class="op">+</span>
|
||
<span class="co"># turn 90 degrees, to make it bars instead of columns</span>
|
||
<span class="fu"><a href="https://ggplot2.tidyverse.org/reference/coord_flip.html" class="external-link">coord_flip</a></span><span class="op">(</span><span class="op">)</span> <span class="op">+</span>
|
||
<span class="co"># add labels</span>
|
||
<span class="fu"><a href="https://ggplot2.tidyverse.org/reference/labs.html" class="external-link">labs</a></span><span class="op">(</span>title <span class="op">=</span> <span class="st">"Resistance per genus and antibiotic"</span>,
|
||
subtitle <span class="op">=</span> <span class="st">"(this is fake data)"</span><span class="op">)</span> <span class="op">+</span>
|
||
<span class="co"># and print genus in italic to follow our convention</span>
|
||
<span class="co"># (is now y axis because we turned the plot)</span>
|
||
<span class="fu"><a href="https://ggplot2.tidyverse.org/reference/theme.html" class="external-link">theme</a></span><span class="op">(</span>axis.text.y <span class="op">=</span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/element.html" class="external-link">element_text</a></span><span class="op">(</span>face <span class="op">=</span> <span class="st">"italic"</span><span class="op">)</span><span class="op">)</span></code></pre></div>
|
||
<p><img src="AMR_files/figure-html/plot%204-1.png" width="720"></p>
|
||
<p>To simplify this, we also created the <code><a href="../reference/ggplot_rsi.html">ggplot_rsi()</a></code>
|
||
function, which combines almost all above functions:</p>
|
||
<div class="sourceCode" id="cb35"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">data_1st</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/group_by.html" class="external-link">group_by</a></span><span class="op">(</span><span class="va">genus</span><span class="op">)</span> <span class="op"><a href="https://magrittr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="../reference/ggplot_rsi.html">ggplot_rsi</a></span><span class="op">(</span>x <span class="op">=</span> <span class="st">"genus"</span>,
|
||
facet <span class="op">=</span> <span class="st">"antibiotic"</span>,
|
||
breaks <span class="op">=</span> <span class="fl">0</span><span class="op">:</span><span class="fl">4</span> <span class="op">*</span> <span class="fl">25</span>,
|
||
datalabels <span class="op">=</span> <span class="cn">FALSE</span><span class="op">)</span> <span class="op">+</span>
|
||
<span class="fu"><a href="https://ggplot2.tidyverse.org/reference/coord_flip.html" class="external-link">coord_flip</a></span><span class="op">(</span><span class="op">)</span></code></pre></div>
|
||
<p><img src="AMR_files/figure-html/plot%205-1.png" width="720"></p>
|
||
<div class="section level4">
|
||
<h4 id="plotting-mic-and-disk-diffusion-values">Plotting MIC and disk diffusion values<a class="anchor" aria-label="anchor" href="#plotting-mic-and-disk-diffusion-values"></a>
|
||
</h4>
|
||
<p>The AMR package also extends the <code><a href="../reference/plot.html">plot()</a></code> and
|
||
<code><a href="https://ggplot2.tidyverse.org/reference/autoplot.html" class="external-link">ggplot2::autoplot()</a></code> functions for plotting minimum
|
||
inhibitory concentrations (MIC, created with <code><a href="../reference/as.mic.html">as.mic()</a></code>) and
|
||
disk diffusion diameters (created with <code><a href="../reference/as.disk.html">as.disk()</a></code>).</p>
|
||
<p>With the <code><a href="../reference/random.html">random_mic()</a></code> and <code><a href="../reference/random.html">random_disk()</a></code>
|
||
functions, we can generate sampled values for the new data types (S3
|
||
classes) <code><mic></code> and <code><disk></code>:</p>
|
||
<div class="sourceCode" id="cb36"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">mic_values</span> <span class="op"><-</span> <span class="fu"><a href="../reference/random.html">random_mic</a></span><span class="op">(</span>size <span class="op">=</span> <span class="fl">100</span><span class="op">)</span>
|
||
<span class="va">mic_values</span>
|
||
<span class="co"># Class <mic></span>
|
||
<span class="co"># [1] 4 4 <=0.001 2 256 32 32 0.002 4 </span>
|
||
<span class="co"># [10] 0.002 0.125 0.005 <=0.001 4 0.002 128 16 32 </span>
|
||
<span class="co"># [19] 256 8 256 0.25 0.025 0.25 0.002 64 <=0.001</span>
|
||
<span class="co"># [28] 0.25 256 2 0.0625 2 0.25 0.01 0.005 2 </span>
|
||
<span class="co"># [37] 0.0625 1 64 32 0.0625 0.002 0.0625 0.125 0.005 </span>
|
||
<span class="co"># [46] 1 256 0.025 256 0.005 16 64 0.25 2 </span>
|
||
<span class="co"># [55] 0.25 1 128 0.0625 0.005 0.5 0.5 <=0.001 0.025 </span>
|
||
<span class="co"># [64] 2 64 0.005 0.0625 0.5 128 0.0625 8 4 </span>
|
||
<span class="co"># [73] 0.002 128 0.01 <=0.001 2 64 64 128 32 </span>
|
||
<span class="co"># [82] 0.005 256 64 0.0625 0.5 32 0.002 <=0.001 1 </span>
|
||
<span class="co"># [91] 16 0.25 0.005 16 2 64 0.005 <=0.001 256 </span>
|
||
<span class="co"># [100] 32</span></code></pre></div>
|
||
<div class="sourceCode" id="cb37"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="co"># base R:</span>
|
||
<span class="fu"><a href="../reference/plot.html">plot</a></span><span class="op">(</span><span class="va">mic_values</span><span class="op">)</span></code></pre></div>
|
||
<p><img src="AMR_files/figure-html/mic_plots-1.png" width="720"></p>
|
||
<div class="sourceCode" id="cb38"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="co"># ggplot2:</span>
|
||
<span class="fu"><a href="https://ggplot2.tidyverse.org/reference/autoplot.html" class="external-link">autoplot</a></span><span class="op">(</span><span class="va">mic_values</span><span class="op">)</span></code></pre></div>
|
||
<p><img src="AMR_files/figure-html/mic_plots-2.png" width="720"></p>
|
||
<p>But we could also be more specific, by generating MICs that are
|
||
likely to be found in <em>E. coli</em> for ciprofloxacin:</p>
|
||
<div class="sourceCode" id="cb39"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">mic_values</span> <span class="op"><-</span> <span class="fu"><a href="../reference/random.html">random_mic</a></span><span class="op">(</span>size <span class="op">=</span> <span class="fl">100</span>, mo <span class="op">=</span> <span class="st">"E. coli"</span>, ab <span class="op">=</span> <span class="st">"cipro"</span><span class="op">)</span></code></pre></div>
|
||
<p>For the <code><a href="../reference/plot.html">plot()</a></code> and <code><a href="https://ggplot2.tidyverse.org/reference/autoplot.html" class="external-link">autoplot()</a></code> function, we
|
||
can define the microorganism and an antimicrobial agent the same way.
|
||
This will add the interpretation of those values according to a chosen
|
||
guidelines (defaults to the latest EUCAST guideline).</p>
|
||
<p>Default colours are colour-blind friendly, while maintaining the
|
||
convention that e.g. ‘susceptible’ should be green and ‘resistant’
|
||
should be red:</p>
|
||
<div class="sourceCode" id="cb40"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="co"># base R:</span>
|
||
<span class="fu"><a href="../reference/plot.html">plot</a></span><span class="op">(</span><span class="va">mic_values</span>, mo <span class="op">=</span> <span class="st">"E. coli"</span>, ab <span class="op">=</span> <span class="st">"cipro"</span><span class="op">)</span></code></pre></div>
|
||
<p><img src="AMR_files/figure-html/mic_plots_mo_ab-1.png" width="720"></p>
|
||
<div class="sourceCode" id="cb41"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="co"># ggplot2:</span>
|
||
<span class="fu"><a href="https://ggplot2.tidyverse.org/reference/autoplot.html" class="external-link">autoplot</a></span><span class="op">(</span><span class="va">mic_values</span>, mo <span class="op">=</span> <span class="st">"E. coli"</span>, ab <span class="op">=</span> <span class="st">"cipro"</span><span class="op">)</span></code></pre></div>
|
||
<p><img src="AMR_files/figure-html/mic_plots_mo_ab-2.png" width="720"></p>
|
||
<p>For disk diffusion values, there is not much of a difference in
|
||
plotting:</p>
|
||
<div class="sourceCode" id="cb42"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="va">disk_values</span> <span class="op"><-</span> <span class="fu"><a href="../reference/random.html">random_disk</a></span><span class="op">(</span>size <span class="op">=</span> <span class="fl">100</span>, mo <span class="op">=</span> <span class="st">"E. coli"</span>, ab <span class="op">=</span> <span class="st">"cipro"</span><span class="op">)</span>
|
||
<span class="co"># ℹ Function `as.mo()` is uncertain about "E. coli" (assuming Escherichia</span>
|
||
<span class="co"># coli). Run `mo_uncertainties()` to review this.</span>
|
||
<span class="va">disk_values</span>
|
||
<span class="co"># Class <disk></span>
|
||
<span class="co"># [1] 28 27 24 30 31 28 30 27 21 22 18 28 20 25 29 18 31 20 31 28 26 31 25 30 29</span>
|
||
<span class="co"># [26] 21 20 25 24 29 23 26 27 26 20 18 29 21 17 31 18 30 30 26 19 17 18 23 30 31</span>
|
||
<span class="co"># [51] 24 22 27 29 17 27 29 20 31 30 19 28 30 21 21 19 19 25 24 30 29 19 21 27 22</span>
|
||
<span class="co"># [76] 30 17 26 21 18 31 29 26 21 23 31 27 30 19 18 20 20 23 28 25 24 31 18 17 28</span></code></pre></div>
|
||
<div class="sourceCode" id="cb43"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="co"># base R:</span>
|
||
<span class="fu"><a href="../reference/plot.html">plot</a></span><span class="op">(</span><span class="va">disk_values</span>, mo <span class="op">=</span> <span class="st">"E. coli"</span>, ab <span class="op">=</span> <span class="st">"cipro"</span><span class="op">)</span></code></pre></div>
|
||
<p><img src="AMR_files/figure-html/disk_plots-1.png" width="720"></p>
|
||
<p>And when using the <code>ggplot2</code> package, but now choosing the
|
||
latest implemented CLSI guideline (notice that the EUCAST-specific term
|
||
“Susceptible, incr. exp.” has changed to “Intermediate”):</p>
|
||
<div class="sourceCode" id="cb44"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="fu"><a href="https://ggplot2.tidyverse.org/reference/autoplot.html" class="external-link">autoplot</a></span><span class="op">(</span><span class="va">disk_values</span>,
|
||
mo <span class="op">=</span> <span class="st">"E. coli"</span>,
|
||
ab <span class="op">=</span> <span class="st">"cipro"</span>,
|
||
guideline <span class="op">=</span> <span class="st">"CLSI"</span><span class="op">)</span></code></pre></div>
|
||
<p><img src="AMR_files/figure-html/disk_plots_mo_ab-1.png" width="720"></p>
|
||
</div>
|
||
</div>
|
||
<div class="section level3">
|
||
<h3 id="independence-test">Independence test<a class="anchor" aria-label="anchor" href="#independence-test"></a>
|
||
</h3>
|
||
<p>The next example uses the <code>example_isolates</code> data set.
|
||
This is a data set included with this package and contains 2,000
|
||
microbial isolates with their full antibiograms. It reflects reality and
|
||
can be used to practice AMR data analysis.</p>
|
||
<p>We will compare the resistance to fosfomycin (column
|
||
<code>FOS</code>) in hospital A and D. The input for the
|
||
<code><a href="https://rdrr.io/r/stats/fisher.test.html" class="external-link">fisher.test()</a></code> can be retrieved with a transformation like
|
||
this:</p>
|
||
<div class="sourceCode" id="cb45"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="co"># use package 'tidyr' to pivot data:</span>
|
||
<span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://tidyr.tidyverse.org" class="external-link">tidyr</a></span><span class="op">)</span>
|
||
|
||
<span class="va">check_FOS</span> <span class="op"><-</span> <span class="va">example_isolates</span> <span class="op"><a href="https://tidyr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/filter.html" class="external-link">filter</a></span><span class="op">(</span><span class="va">hospital_id</span> <span class="op"><a href="https://rdrr.io/r/base/match.html" class="external-link">%in%</a></span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="st">"A"</span>, <span class="st">"D"</span><span class="op">)</span><span class="op">)</span> <span class="op"><a href="https://tidyr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="co"># filter on only hospitals A and D</span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/select.html" class="external-link">select</a></span><span class="op">(</span><span class="va">hospital_id</span>, <span class="va">FOS</span><span class="op">)</span> <span class="op"><a href="https://tidyr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="co"># select the hospitals and fosfomycin</span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/group_by.html" class="external-link">group_by</a></span><span class="op">(</span><span class="va">hospital_id</span><span class="op">)</span> <span class="op"><a href="https://tidyr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="co"># group on the hospitals</span>
|
||
<span class="fu"><a href="../reference/count.html">count_df</a></span><span class="op">(</span>combine_SI <span class="op">=</span> <span class="cn">TRUE</span><span class="op">)</span> <span class="op"><a href="https://tidyr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="co"># count all isolates per group (hospital_id)</span>
|
||
<span class="fu"><a href="https://tidyr.tidyverse.org/reference/pivot_wider.html" class="external-link">pivot_wider</a></span><span class="op">(</span>names_from <span class="op">=</span> <span class="va">hospital_id</span>, <span class="co"># transform output so A and D are columns</span>
|
||
values_from <span class="op">=</span> <span class="va">value</span><span class="op">)</span> <span class="op"><a href="https://tidyr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span>
|
||
<span class="fu"><a href="https://dplyr.tidyverse.org/reference/select.html" class="external-link">select</a></span><span class="op">(</span><span class="va">A</span>, <span class="va">D</span><span class="op">)</span> <span class="op"><a href="https://tidyr.tidyverse.org/reference/pipe.html" class="external-link">%>%</a></span> <span class="co"># and only select these columns</span>
|
||
<span class="fu"><a href="https://rdrr.io/r/base/matrix.html" class="external-link">as.matrix</a></span><span class="op">(</span><span class="op">)</span> <span class="co"># transform to a good old matrix for fisher.test()</span>
|
||
|
||
<span class="va">check_FOS</span>
|
||
<span class="co"># A D</span>
|
||
<span class="co"># [1,] 25 77</span>
|
||
<span class="co"># [2,] 24 33</span></code></pre></div>
|
||
<p>We can apply the test now with:</p>
|
||
<div class="sourceCode" id="cb46"><pre class="downlit sourceCode r">
|
||
<code class="sourceCode R"><span class="co"># do Fisher's Exact Test</span>
|
||
<span class="fu"><a href="https://rdrr.io/r/stats/fisher.test.html" class="external-link">fisher.test</a></span><span class="op">(</span><span class="va">check_FOS</span><span class="op">)</span>
|
||
<span class="co"># </span>
|
||
<span class="co"># Fisher's Exact Test for Count Data</span>
|
||
<span class="co"># </span>
|
||
<span class="co"># data: check_FOS</span>
|
||
<span class="co"># p-value = 0.03104</span>
|
||
<span class="co"># alternative hypothesis: true odds ratio is not equal to 1</span>
|
||
<span class="co"># 95 percent confidence interval:</span>
|
||
<span class="co"># 0.2111489 0.9485124</span>
|
||
<span class="co"># sample estimates:</span>
|
||
<span class="co"># odds ratio </span>
|
||
<span class="co"># 0.4488318</span></code></pre></div>
|
||
<p>As can be seen, the p value is 0.031, which means that the fosfomycin
|
||
resistance found in isolates from patients in hospital A and D are
|
||
really different.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar">
|
||
|
||
<nav id="toc" data-toggle="toc"><h2 data-toc-skip>Contents</h2>
|
||
</nav>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<footer><div class="copyright">
|
||
<p></p>
|
||
<p>Developed by Matthijs S. Berends, Christian F. Luz, Dennis Souverein, Erwin E. A. Hassing.</p>
|
||
</div>
|
||
|
||
<div class="pkgdown">
|
||
<p></p>
|
||
<p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.0.3.</p>
|
||
</div>
|
||
|
||
</footer>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</body>
|
||
</html>
|