我是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
在这里,我们需要删除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()