r-如何将组平均值与个人观察值进行比较,并创建一个新的TRUE/FALSE列



我是R的新手,这是我在SO上的第一篇帖子,所以请耐心等待。

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

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

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

我想在原始数据集中创建一个新列,根据(AvgConc(是大于最大值还是小于我在第二个数据帧中计算的最小值,给出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进行连接来删除Quantiles.Data$。数据"by"、"状态"、"刺激"、"治疗">

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()

最新更新