Skip to contents

Calculate absorbance means with optional outlier removal

Usage

qp_calc_abs_mean(x, ignore_outliers = c("all", "standards", "samples", "none"))

# S3 method for class 'data.frame'
qp_calc_abs_mean(x, ignore_outliers = c("all", "standards", "samples", "none"))

# S3 method for class 'list'
qp_calc_abs_mean(x, ignore_outliers = c("all", "standards", "samples", "none"))

Arguments

x

A data.frame or list containing a data.frame named qp. See details.

ignore_outliers

Which sample types should have outliers ignored from their mean calculations? If .is_outlier column is supplied, this argument is ignored.

Value

The input tibble with an .is_outlier column and a .mean column

Details

Input data.frame must contain the following columns:

  • sample_type. Character. Must contain values either "standard" or "unknown"

  • index. Numeric. Denotes sample number.

  • .abs. Numeric. Contains absorbance values.

  • If a boolean .is_outlier is supplied, that will be used instead.

Examples

 library(dplyr)
#> 
#> Attaching package: ‘dplyr’
#> The following objects are masked from ‘package:stats’:
#> 
#>     filter, lag
#> The following objects are masked from ‘package:base’:
#> 
#>     intersect, setdiff, setequal, union

abs <- expand.grid(
  sample_type = c("standard", "unknown"),
  index = 1:7,
  rep = 1:3
) |>
  dplyr::arrange(sample_type, index, rep)

abs$.abs <- abs(rnorm(nrow(abs), mean = abs$index))

# Selecting different subsets for outlier removal
qp_calc_abs_mean(abs, "none")
#>    sample_type index rep      .abs .is_outlier     .mean
#> 1     standard     1   1 0.8218177          NA 0.7767643
#> 2     standard     1   2 0.7526747          NA 0.7767643
#> 3     standard     1   3 0.7558004          NA 0.7767643
#> 4     standard     2   1 1.7172946          NA 1.9308591
#> 5     standard     2   2 1.4463006          NA 1.9308591
#> 6     standard     2   3 2.6289820          NA 1.9308591
#> 7     standard     3   1 5.0650249          NA 3.3154875
#> 8     standard     3   2 1.3690106          NA 3.3154875
#> 9     standard     3   3 3.5124269          NA 3.3154875
#> 10    standard     4   1 2.1369885          NA 3.1874580
#> 11    standard     4   2 3.4779875          NA 3.1874580
#> 12    standard     4   3 3.9473981          NA 3.1874580
#> 13    standard     5   1 5.5429963          NA 5.0323586
#> 14    standard     5   2 4.0859252          NA 5.0323586
#> 15    standard     5   3 5.4681544          NA 5.0323586
#> 16    standard     6   1 6.3629513          NA 5.9320613
#> 17    standard     6   2 4.6954565          NA 5.9320613
#> 18    standard     6   3 6.7377763          NA 5.9320613
#> 19    standard     7   1 8.8885049          NA 7.2850708
#> 20    standard     7   2 6.9025549          NA 7.2850708
#> 21    standard     7   3 6.0641526          NA 7.2850708
#> 22     unknown     1   1 0.9840497          NA 0.5565535
#> 23     unknown     1   2 0.1732110          NA 0.5565535
#> 24     unknown     1   3 0.5123997          NA 0.5565535
#> 25     unknown     2   1 2.9353632          NA 2.4518458
#> 26     unknown     2   2 2.1764886          NA 2.4518458
#> 27     unknown     2   3 2.2436855          NA 2.4518458
#> 28     unknown     3   1 4.6235489          NA 3.5338633
#> 29     unknown     3   2 3.1120381          NA 3.5338633
#> 30     unknown     3   3 2.8660030          NA 3.5338633
#> 31     unknown     4   1 2.0899125          NA 3.1657431
#> 32     unknown     4   2 3.7207628          NA 3.1657431
#> 33     unknown     4   3 3.6865540          NA 3.1657431
#> 34     unknown     5   1 6.0673079          NA 5.1660731
#> 35     unknown     5   2 5.0700349          NA 5.1660731
#> 36     unknown     5   3 4.3608767          NA 5.1660731
#> 37     unknown     6   1 5.9500351          NA 6.0477829
#> 38     unknown     6   2 5.7485166          NA 6.0477829
#> 39     unknown     6   3 6.4447971          NA 6.0477829
#> 40     unknown     7   1 9.7554176          NA 8.1265527
#> 41     unknown     7   2 7.0465314          NA 8.1265527
#> 42     unknown     7   3 7.5777091          NA 8.1265527

qp_calc_abs_mean(abs, "standards")
#>    sample_type index rep      .abs .is_outlier     .mean
#> 1     standard     1   1 0.8218177        TRUE 0.7542375
#> 2     standard     1   2 0.7526747       FALSE 0.7542375
#> 3     standard     1   3 0.7558004       FALSE 0.7542375
#> 4     standard     2   1 1.7172946       FALSE 1.5817976
#> 5     standard     2   2 1.4463006       FALSE 1.5817976
#> 6     standard     2   3 2.6289820        TRUE 1.5817976
#> 7     standard     3   1 5.0650249       FALSE 3.3154875
#> 8     standard     3   2 1.3690106       FALSE 3.3154875
#> 9     standard     3   3 3.5124269       FALSE 3.3154875
#> 10    standard     4   1 2.1369885        TRUE 3.7126928
#> 11    standard     4   2 3.4779875       FALSE 3.7126928
#> 12    standard     4   3 3.9473981       FALSE 3.7126928
#> 13    standard     5   1 5.5429963       FALSE 5.5055754
#> 14    standard     5   2 4.0859252        TRUE 5.5055754
#> 15    standard     5   3 5.4681544       FALSE 5.5055754
#> 16    standard     6   1 6.3629513       FALSE 6.5503638
#> 17    standard     6   2 4.6954565        TRUE 6.5503638
#> 18    standard     6   3 6.7377763       FALSE 6.5503638
#> 19    standard     7   1 8.8885049        TRUE 6.4833538
#> 20    standard     7   2 6.9025549       FALSE 6.4833538
#> 21    standard     7   3 6.0641526       FALSE 6.4833538
#> 22     unknown     1   1 0.9840497          NA 0.5565535
#> 23     unknown     1   2 0.1732110          NA 0.5565535
#> 24     unknown     1   3 0.5123997          NA 0.5565535
#> 25     unknown     2   1 2.9353632          NA 2.4518458
#> 26     unknown     2   2 2.1764886          NA 2.4518458
#> 27     unknown     2   3 2.2436855          NA 2.4518458
#> 28     unknown     3   1 4.6235489          NA 3.5338633
#> 29     unknown     3   2 3.1120381          NA 3.5338633
#> 30     unknown     3   3 2.8660030          NA 3.5338633
#> 31     unknown     4   1 2.0899125          NA 3.1657431
#> 32     unknown     4   2 3.7207628          NA 3.1657431
#> 33     unknown     4   3 3.6865540          NA 3.1657431
#> 34     unknown     5   1 6.0673079          NA 5.1660731
#> 35     unknown     5   2 5.0700349          NA 5.1660731
#> 36     unknown     5   3 4.3608767          NA 5.1660731
#> 37     unknown     6   1 5.9500351          NA 6.0477829
#> 38     unknown     6   2 5.7485166          NA 6.0477829
#> 39     unknown     6   3 6.4447971          NA 6.0477829
#> 40     unknown     7   1 9.7554176          NA 8.1265527
#> 41     unknown     7   2 7.0465314          NA 8.1265527
#> 42     unknown     7   3 7.5777091          NA 8.1265527

qp_calc_abs_mean(abs, "samples")
#>    sample_type index rep      .abs .is_outlier     .mean
#> 1     standard     1   1 0.8218177          NA 0.7767643
#> 2     standard     1   2 0.7526747          NA 0.7767643
#> 3     standard     1   3 0.7558004          NA 0.7767643
#> 4     standard     2   1 1.7172946          NA 1.9308591
#> 5     standard     2   2 1.4463006          NA 1.9308591
#> 6     standard     2   3 2.6289820          NA 1.9308591
#> 7     standard     3   1 5.0650249          NA 3.3154875
#> 8     standard     3   2 1.3690106          NA 3.3154875
#> 9     standard     3   3 3.5124269          NA 3.3154875
#> 10    standard     4   1 2.1369885          NA 3.1874580
#> 11    standard     4   2 3.4779875          NA 3.1874580
#> 12    standard     4   3 3.9473981          NA 3.1874580
#> 13    standard     5   1 5.5429963          NA 5.0323586
#> 14    standard     5   2 4.0859252          NA 5.0323586
#> 15    standard     5   3 5.4681544          NA 5.0323586
#> 16    standard     6   1 6.3629513          NA 5.9320613
#> 17    standard     6   2 4.6954565          NA 5.9320613
#> 18    standard     6   3 6.7377763          NA 5.9320613
#> 19    standard     7   1 8.8885049          NA 7.2850708
#> 20    standard     7   2 6.9025549          NA 7.2850708
#> 21    standard     7   3 6.0641526          NA 7.2850708
#> 22     unknown     1   1 0.9840497       FALSE 0.5565535
#> 23     unknown     1   2 0.1732110       FALSE 0.5565535
#> 24     unknown     1   3 0.5123997       FALSE 0.5565535
#> 25     unknown     2   1 2.9353632        TRUE 2.2100870
#> 26     unknown     2   2 2.1764886       FALSE 2.2100870
#> 27     unknown     2   3 2.2436855       FALSE 2.2100870
#> 28     unknown     3   1 4.6235489        TRUE 2.9890205
#> 29     unknown     3   2 3.1120381       FALSE 2.9890205
#> 30     unknown     3   3 2.8660030       FALSE 2.9890205
#> 31     unknown     4   1 2.0899125        TRUE 3.7036584
#> 32     unknown     4   2 3.7207628       FALSE 3.7036584
#> 33     unknown     4   3 3.6865540       FALSE 3.7036584
#> 34     unknown     5   1 6.0673079       FALSE 5.1660731
#> 35     unknown     5   2 5.0700349       FALSE 5.1660731
#> 36     unknown     5   3 4.3608767       FALSE 5.1660731
#> 37     unknown     6   1 5.9500351       FALSE 5.8492758
#> 38     unknown     6   2 5.7485166       FALSE 5.8492758
#> 39     unknown     6   3 6.4447971        TRUE 5.8492758
#> 40     unknown     7   1 9.7554176        TRUE 7.3121202
#> 41     unknown     7   2 7.0465314       FALSE 7.3121202
#> 42     unknown     7   3 7.5777091       FALSE 7.3121202

qp_calc_abs_mean(abs, "all")
#>    sample_type index rep      .abs .is_outlier     .mean
#> 1     standard     1   1 0.8218177        TRUE 0.7542375
#> 2     standard     1   2 0.7526747       FALSE 0.7542375
#> 3     standard     1   3 0.7558004       FALSE 0.7542375
#> 4     standard     2   1 1.7172946       FALSE 1.5817976
#> 5     standard     2   2 1.4463006       FALSE 1.5817976
#> 6     standard     2   3 2.6289820        TRUE 1.5817976
#> 7     standard     3   1 5.0650249       FALSE 3.3154875
#> 8     standard     3   2 1.3690106       FALSE 3.3154875
#> 9     standard     3   3 3.5124269       FALSE 3.3154875
#> 10    standard     4   1 2.1369885        TRUE 3.7126928
#> 11    standard     4   2 3.4779875       FALSE 3.7126928
#> 12    standard     4   3 3.9473981       FALSE 3.7126928
#> 13    standard     5   1 5.5429963       FALSE 5.5055754
#> 14    standard     5   2 4.0859252        TRUE 5.5055754
#> 15    standard     5   3 5.4681544       FALSE 5.5055754
#> 16    standard     6   1 6.3629513       FALSE 6.5503638
#> 17    standard     6   2 4.6954565        TRUE 6.5503638
#> 18    standard     6   3 6.7377763       FALSE 6.5503638
#> 19    standard     7   1 8.8885049        TRUE 6.4833538
#> 20    standard     7   2 6.9025549       FALSE 6.4833538
#> 21    standard     7   3 6.0641526       FALSE 6.4833538
#> 22     unknown     1   1 0.9840497       FALSE 0.5565535
#> 23     unknown     1   2 0.1732110       FALSE 0.5565535
#> 24     unknown     1   3 0.5123997       FALSE 0.5565535
#> 25     unknown     2   1 2.9353632        TRUE 2.2100870
#> 26     unknown     2   2 2.1764886       FALSE 2.2100870
#> 27     unknown     2   3 2.2436855       FALSE 2.2100870
#> 28     unknown     3   1 4.6235489        TRUE 2.9890205
#> 29     unknown     3   2 3.1120381       FALSE 2.9890205
#> 30     unknown     3   3 2.8660030       FALSE 2.9890205
#> 31     unknown     4   1 2.0899125        TRUE 3.7036584
#> 32     unknown     4   2 3.7207628       FALSE 3.7036584
#> 33     unknown     4   3 3.6865540       FALSE 3.7036584
#> 34     unknown     5   1 6.0673079       FALSE 5.1660731
#> 35     unknown     5   2 5.0700349       FALSE 5.1660731
#> 36     unknown     5   3 4.3608767       FALSE 5.1660731
#> 37     unknown     6   1 5.9500351       FALSE 5.8492758
#> 38     unknown     6   2 5.7485166       FALSE 5.8492758
#> 39     unknown     6   3 6.4447971        TRUE 5.8492758
#> 40     unknown     7   1 9.7554176        TRUE 7.3121202
#> 41     unknown     7   2 7.0465314       FALSE 7.3121202
#> 42     unknown     7   3 7.5777091       FALSE 7.3121202

# If an `.is_outlier` column is provided, that will be used instead:

abs$.is_outlier <- rep(c(TRUE, FALSE), length.out = nrow(abs))

qp_calc_abs_mean(abs)
#> Data has `.is_outlier` column, using that
#>    sample_type index rep      .abs .is_outlier     .mean
#> 1     standard     1   1 0.8218177        TRUE 0.7526747
#> 2     standard     1   2 0.7526747       FALSE 0.7526747
#> 3     standard     1   3 0.7558004        TRUE 0.7526747
#> 4     standard     2   1 1.7172946       FALSE 2.1731383
#> 5     standard     2   2 1.4463006        TRUE 2.1731383
#> 6     standard     2   3 2.6289820       FALSE 2.1731383
#> 7     standard     3   1 5.0650249        TRUE 1.3690106
#> 8     standard     3   2 1.3690106       FALSE 1.3690106
#> 9     standard     3   3 3.5124269        TRUE 1.3690106
#> 10    standard     4   1 2.1369885       FALSE 3.0421933
#> 11    standard     4   2 3.4779875        TRUE 3.0421933
#> 12    standard     4   3 3.9473981       FALSE 3.0421933
#> 13    standard     5   1 5.5429963        TRUE 4.0859252
#> 14    standard     5   2 4.0859252       FALSE 4.0859252
#> 15    standard     5   3 5.4681544        TRUE 4.0859252
#> 16    standard     6   1 6.3629513       FALSE 6.5503638
#> 17    standard     6   2 4.6954565        TRUE 6.5503638
#> 18    standard     6   3 6.7377763       FALSE 6.5503638
#> 19    standard     7   1 8.8885049        TRUE 6.9025549
#> 20    standard     7   2 6.9025549       FALSE 6.9025549
#> 21    standard     7   3 6.0641526        TRUE 6.9025549
#> 22     unknown     1   1 0.9840497       FALSE 0.7482247
#> 23     unknown     1   2 0.1732110        TRUE 0.7482247
#> 24     unknown     1   3 0.5123997       FALSE 0.7482247
#> 25     unknown     2   1 2.9353632        TRUE 2.1764886
#> 26     unknown     2   2 2.1764886       FALSE 2.1764886
#> 27     unknown     2   3 2.2436855        TRUE 2.1764886
#> 28     unknown     3   1 4.6235489       FALSE 3.7447759
#> 29     unknown     3   2 3.1120381        TRUE 3.7447759
#> 30     unknown     3   3 2.8660030       FALSE 3.7447759
#> 31     unknown     4   1 2.0899125        TRUE 3.7207628
#> 32     unknown     4   2 3.7207628       FALSE 3.7207628
#> 33     unknown     4   3 3.6865540        TRUE 3.7207628
#> 34     unknown     5   1 6.0673079       FALSE 5.2140923
#> 35     unknown     5   2 5.0700349        TRUE 5.2140923
#> 36     unknown     5   3 4.3608767       FALSE 5.2140923
#> 37     unknown     6   1 5.9500351        TRUE 5.7485166
#> 38     unknown     6   2 5.7485166       FALSE 5.7485166
#> 39     unknown     6   3 6.4447971        TRUE 5.7485166
#> 40     unknown     7   1 9.7554176       FALSE 8.6665633
#> 41     unknown     7   2 7.0465314        TRUE 8.6665633
#> 42     unknown     7   3 7.5777091       FALSE 8.6665633