我是R新手.在将样本放入随机森林之前,我想做一些异常值清理和从0到1的过度扩展.
g<-c(1000,60,50,60,50,40,50,60,70,60,40,70,50,60,50,70,10)
Run Code Online (Sandbox Code Playgroud)
如果我从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
Run Code Online (Sandbox Code Playgroud)
所以我的想法是将每列大于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**)
Run Code Online (Sandbox Code Playgroud)
和缩放:
> 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
Run Code Online (Sandbox Code Playgroud)
我需要这个公式用于整个数据帧,因此R中的功能实现应该是这样的:
> apply(c, 2, function(x) x[x`<quantile(x, 0.95)]`<-max(x[x, ... max without the quantile(x, 0.95))
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
旁边说:如果有直接完成这项工作的功能,请告诉我.我已签出cut和cut2.cut由于没有独特的休息而失败; …