R - 如何消除向量的上x%

时间:2017-01-28 09:34:55

标签: r percentage outliers

我需要抛弃变量的异常值。 我想减少变量的上10%。 然而,我不知道如何找出哪些是我的10%。 如果我在30处随机剪切,我会得到3.45%的上限。

dat$T102_01[dat$T102_01 < 30]

有没有办法告诉r不要取值&lt; 30但是前90%的值?

由于我不想做出基于内容的决定(30以上的任何内容都是不切实际的),最好采取我所声明的所有变量的上10%。

我会非常感谢任何评论

抱歉,我无法添加我的情节照片。分布是倾斜的,大多数值在0-30之间,非常的视图值在30-100之间

2 个答案:

答案 0 :(得分:2)

我会使用分位数函数如下:

x <- rnorm(50)
p90 <- quantile(x = x,probs = .9)
want <- x[x<p90]

答案 1 :(得分:0)

您可以通过sort执行此操作,并通过它找到90%的值:

vec <- rnorm(1000)

cut <- sort( vec )[ round( length( vec ) * 0.9 ) ]

vec <- vec[ vec < cut ]

因此我们对向量进行排序,并将向量中的值作为cut点的90%。然后我们使用cut点仅获取主矢量的底部90%。