2013-05-13 21 views
0

嗨我有5个变量,1000个观察值。所以这5个变量包含很多异常值,如10,11,13,1003,10987,1099,并且它还包含缺失值。所以我想删除多个异常值。请帮助我....在此先感谢。如何从data.frame中删除多个异常值R

+1

请帮助我们为我们提供了一个可重复的例子(即代码和示例数据)帮你,看http://stackoverflow.com/questions/5963269/how-to-make-a-great-r - 可重现的例子的细节。 – 2013-05-13 05:26:04

+2

您可以从以下其中一个方法开始:'install.packages(“outliers”)'; '库(离群值)'。在继续前进之前,还要考虑使用鲁棒的方法,而不是使用异常排斥。如果这是关于异常值的一般性问题,您可能会在[CrossValidated](http://stats.stackexchange.com/)上找到更容易接受的受众群体。给你所面临的问题(及其规模)提供一些线索可能会使某些方法更具吸引力。删除“NA”可能是一个单独的问题,您应该已能在本网站上找到答案。 – dardisco 2013-05-13 06:14:42

+0

[如何从数据集中删除异常值]的可能重复(http://stackoverflow.com/questions/4787332/how-to-remove-outliers-from-a-dataset) – Fluffeh 2014-04-29 09:18:00

回答

3

您可以创建条件来提取相关数据并排除异常值。例如,如果您的数据框被称为“DF1”,并要提取中某列的数据:1和5之间,数值(例如列“2”):

condition1 <- df1[,2] >=1 & df1[,2] <=5 
df1 <- df1[condition1,] 

我希望这有助于

0

一些不太依赖于特定值的东西使用分位数。

df <- data.frame(a = c(rep(1, 5), c(5, 7)), b = 1:7) 
keep <- sapply(names(df), function(f) (df[,f] <= quantile(df[,f], probs = c(0.9)))) 
df[apply(keep, 1, all),] 
    a b 
1 1 1 
2 1 2 
3 1 3 
4 1 4 
5 1 5 
6 5 6