【问题标题】:R - how to eliminate upper x% of a vectorR - 如何消除向量的上 x%
【发布时间】:2017-01-28 09:34:55
【问题描述】:

我需要丢弃变量的异常值。 我想减少变量的上 10%。 然而我不知道如何找出我的上 10%。 如果我在 30 进行随机切割,我会得到较高的 3.45 %。

dat$T102_01[dat$T102_01 < 30]

有没有办法告诉 r 不要取

由于我不想做出基于内容的决定(任何高于 30 的值都是不现实的),因此最好采用我评估过的所有变量的前 10%。

我会非常感谢任何 cmets

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

【问题讨论】:

  • 您可以使用?quantile 来获取 %cutpoint,然后将向量子集化。例如x = 20:1 ; cutpoint = quantile(x, p=0.9) ; x[x &lt; cutpoint]

标签: r percentage outliers


【解决方案1】:

我会按如下方式使用分位数函数:

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

【讨论】:

    【解决方案2】:

    您可以通过执行sort 来做到这一点,并在其中找到 90% 的值:

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

    所以我们对向量进行排序,并将向量中 90% 处的值作为cut 点。然后我们使用cut 点只取主向量的底部 90%。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多