如何提取并找到箱线图[R]中显示的异常值的相应行? [重复]

问题描述 投票:0回答:1

因此,我想提取箱线图中显示的异常值并找到相应的行并将其从数据框中删除。我该怎么做?

我用谷歌搜索了这个问题,但找不到任何解决方案。我发现的对该问题的唯一类似解决方案是使用函数

boxplot
,但该函数仅提取异常值的值,而不是数据帧的相应行。

r ggplot2 boxplot
1个回答
0
投票

使用内置的

InsectSprays
数据集,您可以将
boxplot
命令保存到 R 对象,然后根据函数返回的
$out
和 $
group
值过滤掉异常值。

bp <- boxplot(count ~ spray, data = InsectSprays)

enter image description here

bp$out
#[1]  7 12

bp$group
#[1] 3 4
    
IS_no_outlier <- InsectSprays[
   !(InsectSprays$spray %in% levels(InsectSprays$spray)[bp$group] & 
   InsectSprays$count %in% bp$out),]

boxplot(count ~ spray, data = IS_no_outlier)

enter image description here

您还可以使用

which

获取定义为异常值的行
which(InsectSprays$spray %in% levels(InsectSprays$spray)[bp$group] & InsectSprays$count %in% bp$out)
#[1] 27 39

但要小心,因为更改数据集现在可能会引发新的异常值。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.