R编程 - 检测异常值的循环

时间:2016-07-16 08:19:28

标签: r

我正在尝试编写R代码来检测数据集中的异常值,并从我现有的数据集中删除每个异常值行并保存在另一个数据文件中。

我有一个数据集" Dummy"包括25变量,我想从这个数据集中删除异常值行并将这些行保存到另一个数据文件...

我有以下用于检测异常值的R代码......

library(outliers)
for(i in 2:25)
{
  outlier[i]=outlier(Dummy[i], logical=TRUE)
  find_outlier[i]=which(outlier[i]==TRUE,arr.ind=TRUE)
  new_outlier[i]=Dummy[find_outlier[,i]]
}

当我为一个变量运行此语法时,它可以正常工作但是当我将这些代码放入循环时它不起作用。重复循环中有问题吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

你真的不需要for循环来执行此操作。

Student <- c("A", "B", "C", "D", "E")
Test1 <- c(45, 36, 41, 42, 15)
Test2 <- c(47, 42, 38, 34, 44)
Test3 <- c(39, 41, 35, 21, 48)
Test4 <- c(13, 45, 42, 35, 37)
Test5 <- c(36, 38, 42, 14, 47)
Dummy <- data.frame(Student, Test1, Test2, Test3, Test4, Test5)
out <- outlier(Dummy[,2:6], logical=TRUE)
out <- cbind(FALSE, out)
# Actual outlier values
Dummy[which(out[,], TRUE)]
# Row and column numbers of the outliers
which(out[,], TRUE)

这是你想要实现的目标吗?

答案 1 :(得分:0)

我的数据框是这样的 - 测试1,测试2 ...是我的变量名称按列排列,其中A,B,C,D ......是学生姓名。我想检查每个变量中每行的异常值。现在写我正在使用这种语法 -

库(离群值)
out&lt; - outlier(Dummy,logical = TRUE) 假人[其中[out [,],TRUE)]