2012-06-21 105 views
4

將R箱線圖功能是看數據非常有用的方法:它迅速爲您提供的大致位置和數據的變化,和異常值的數量的可視摘要。另外,我想識別異常值,以便快速找到數據集中的問題。如何識別R boxplot中異常值的標籤?

這些異常值的值可以使用myplot$out被訪問。不幸的是,這些異常值的標籤似乎不可用。有旨在對劇情本身顯示的標籤,一些軟件包:http://www.r-statistics.com/2011/01/how-to-label-all-the-outliers-in-a-boxplot/,但他們沒有工作很好,我只是想列出這些異常值,我並不需要他們對劇情本身。

任何想法?

回答

13

你自己完成了大部分的努力工作。所有這一切都其餘是一個比較:

##First create some data 
##You should include this in your question) 
set.seed(2) 
dd = data.frame(x = rlnorm(26), y=LETTERS) 

抓住離羣

outliers = boxplot(dd$x, plot=FALSE)$out 

從原始數據幀

dd[dd$x %in% outliers,] 

進一步說明提取離羣值:

可變dd$x是26號的向量。變量outliers包含離羣值(只需輸入[R控制檯dd$xoutliers)。

[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE <snip> 

的方括號,dd[dd$x %in% outliers,]返回數據幀dd的行,其中dd$x %in% outliers返回TRUE:該命令

dd$x %in% outliers 

DD $ x和異常值,即值相匹配。

+0

你能否解釋一下你的解決方案是如何工作的? –

2

我建議which(x < myplot$stats[1] | x > myplot$stats[5])其中x是你的數據。

+0

謝謝,這也有效! –

1

如果輸入的數據是帶有命名元素的向量,boxplot保留名稱。

set.seed(2) 
x <- rlnorm(26) 
names(x) <- LETTERS 
outliers <- boxplot(x, plot=FALSE)$out 
outliers 
     I  O  U  X 
7.275219 5.943089 8.091541 7.061459