首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rm.outlier函数的data.frame中出现错误

使用rm.outlier函数的data.frame中出现错误
EN

Stack Overflow用户
提问于 2012-12-03 23:03:07
回答 2查看 2.3K关注 0票数 2

我有一个1488的数据帧。和400var。我正在尝试记录表中的所有值,然后通过命令rm.outlier使用包异常值,我正在尝试删除异常值。唯一的问题是我得到了这个错误:

代码语言:javascript
复制
Error in data.frame(V1 = c(-0.886056647693163, -0.677780705266081, -1.15490195998574,  : arguments imply differing number of rows: 1487, 1480, 1481, 1475, 1479, 1478, 1483, 1485, 1484, 1477, 1482, 1469

这是我的代码:

代码语言:javascript
复制
datalog <- matrix(0,nrow(data),ncol(data))
datalog[,] <- apply(data,2,log10)
datalog[datalog==-Inf] <- 0
datalog <- as.data.frame(datalog, stringsAsFactors=F)

testNoOutliers <- rm.outlier(datalog, fill = FALSE, 
                         median = FALSE, opposite = FALSE)

我的数据:https://skydrive.live.com/redir?resid=CEC7696F3B5BFBC6!341&authkey=!APiwy6qasD3-yGo

谢谢你的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-03 23:12:27

出现此错误是因为从每列中删除了不同数量的异常值,因此不能将列放在一个数据帧中。

代码语言:javascript
复制
out.rem<-function(x) {
  x[which(x==outlier(x))]=NA
  x
}

apply(datalog,2,out.rem)

要删除包含离群值的整个行,可以向@agstudy解决方案添加额外的行

代码语言:javascript
复制
ll <- apply(datalog,2,function(x) which(x == outlier(x)))
new.datalog <- datalog[-unique(unlist(ll)),]
票数 0
EN

Stack Overflow用户

发布于 2012-12-04 01:08:49

你得到这个错误是因为你没有相同数量的异常值条形变量。

要纠正此错误,您有两个选择:

  1. put选项fill = TRUE:放置平均值而不是异常值且未删除
  2. 自己删除异常值:获取每个变量的异常值索引列表ll <- apply(datalog,2,(X)

(X)

  1. (x == outlier (X)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13685914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档