提问者:小点点

如何将组均值与单个观察值进行比较并制作新的TRUE/FALSE列?


我是R的新手,这是我在SO上的第一篇文章——所以请耐心听我说。

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

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

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

我想在原始数据集中创建一个新列,该列根据(AvgConc)是大于第二个data. frame中计算的最大值还是小于最小值来给出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()

错误:列异常值必须是长度8(组大小)或1,而不是192


共1个答案

匿名用户

在这里,我们需要删除Quantiles.Data$,方法是通过与'状态','Stim','处理'进行Original.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()