如何将组均值与个体观察结果进行比较并创建一个新的 TRUE/FALSE 列?

How do I compare group means to individual observations and make a new TRUE/FALSE column?

我是 R 的新手,这是我第一次 post SO - 所以请多多包涵。

我正在尝试识别数据集中的异常值。我有两个 data.frames:

(1 - 原始数据集,192 行):观测值及其值 (AvgConc)

(2 - 使用 dplyr 创建,24 行):原始数据集的组平均值,以及分位数、最小值和最大值

我想在原始数据集中创建一个新列,根据 (AvgConc) 是大于最大值还是小于我在第二个 [=29= 中计算的最小值,给出 TRUE/FALSE ].我该怎么做?

尝试失败:

Outliers <- Original.Data %>%
 group_by(Status, Stim, Treatment) %>%
 mutate(Outlier = Original.Data$AvgConc > Quantiles.Data$Maximum | Original.Data$AvgConc <  Quantiles.Data$Minimum) %>%
 as.data.frame()

错误:列 Outlier 的长度必须为 8(组大小)或 1,而不是 192

在这里,我们需要通过与 'Original.Data' by 和 'Status'、'Stim'、'Treatment' 进行连接来删除 Quantiles.Data$

library(dplyr)
Original.Data %>%
   inner_join(Quantiles.Data %>% 
              select(Status, Stim, Treatment, Maximum, Minimum)) %>%
   group_by(Status, Stim, Treatment) %>%
   mutate(Outlier = (AvgConc > Maximum) |(AvgConc <  Minimum)) %>%
   as.data.frame()