function - R:使用分位数 0.05 和 0.95 对数据框中的每一列进行异常值清理

标签 function r scaling dataframe outliers

我是 R 新手。在将样本放入随机森林之前,我想进行一些离群值清理和从 0 到 1 的总体缩放。

g<-c(1000,60,50,60,50,40,50,60,70,60,40,70,50,60,50,70,10)

如果我从 0 - 1 进行简单的缩放,结果将是:

> round((g - min(g))/abs(max(g) - min(g)),1)

 [1] 1.0 0.1 0.0 0.1 0.0 0.0 0.0 0.1 0.1 0.1 0.0 0.1 0.0 0.1 0.0 0.1 0.0

所以我的想法是将每列大于 0.95 分位数的值替换为小于 0.95 分位数的下一个值 - 0.05 分位数也是如此。

因此预缩放结果将是:

g<-c(**70**,60,50,60,50,40,50,60,70,60,40,70,50,60,50,70,**40**)

并缩放:

> round((g - min(g))/abs(max(g) - min(g)),1)

 [1] 1.0 0.7 0.3 0.7 0.3 0.0 0.3 0.7 1.0 0.7 0.0 1.0 0.3 0.7 0.3 1.0 0.0

我需要这个公式来表示整个数据框,因此 R 中的功能实现应该类似于:

> apply(c, 2, function(x) x[x`<quantile(x, 0.95)]`<-max(x[x, ... max without the quantile(x, 0.95))

有人可以帮忙吗?

旁白:如果存在直接执行此工作的函数,请告诉我。我已经检查过 cutcut2cut 由于不唯一的中断而失败; cut2 可以工作,但只能返回字符串值或平均值,而且我需要一个 0 - 1 之间的数字向量。

试用:

a<-c(100,6,5,6,5,4,5,6,7,6,4,7,5,6,5,7,1)

b<-c(1000,60,50,60,50,40,50,60,70,60,40,70,50,60,50,70,10)

c<-cbind(a,b)

c<-as.data.frame(c)

问候并感谢您的帮助,

雷纳

最佳答案

请不要这样做。对于处理异常值来说,这不是一个好的策略 - 特别是因为 10% 的数据不太可能是异常值!

关于function - R:使用分位数 0.05 和 0.95 对数据框中的每一列进行异常值清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5281883/

相关文章:

php - PHP错误处理- “missing argument for errorHandler”

javascript - 如何在 Javascript 中包装一个函数?

r - 在 pivot_longer 的 names_pattern 参数中为通过前缀的存在或不存在区分的多个变量编码正则表达式

c# - 获取图表 X Axis 0 点处的网格线/间隔(灵活的 Axis 缩放)

ios - 动态收缩 SKSpriteNode

php - 支持多重php签名

javascript document.write 变量

r - R 中使用 lm 的可变长度不同

r - 从 data.frame 中提取列比从矩阵中提取列更快 - 为什么?

javascript - 移动设备 - 覆盖视口(viewport)比例设置以实现缩放/平移媒体查看器?