2017-01-28 1 views
1

私の変数の異常値を捨てる必要があります。 私の変数の上位10%を減らしたいと思います。 しかし私はどのように私の上位10%であるかを見つける手がかりがありません。 30歳でランダムカットをすると、上位は3.45%になります。R - ベクトルの上位x%を排除する方法

dat$T102_01[dat$T102_01 < 30] 

値< 30が、値の最初の90%を取ることではないRを指示する方法はありますか?

コンテンツベースの決定(30を超えるものはすべて非現実的です)を作成したくないので、私がassesedしたすべての変数の上位10%を取る方がよいでしょう。

私は私が私のプロットの写真を追加しcan't

申し訳ありませんが、コメントのために非常に感謝するでしょう。分布に偏りがあると、ほとんどの値は0から30の間にある、非常にビューの値は30-100

+3

あなたは%のカットポイントを取得するために 'quantile'使用し、ちょうどあなたのベクトルのサブセットだろうか?と。例えば ​​'x = 20:1; cutpoint = quantile(x、p = 0.9); x [x <カットポイント] ' – user20650

答えて

0

の間にあるあなたはsortをすることによって、これを行うと、それを通じて価値の道の90%を見つけることができます:

vec <- rnorm(1000) 

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

vec <- vec[ vec < cut ] 

したがって、ベクトルをソートし、ベクトルの90%の点で値をcut点として取ります。その後、cutポイントを使用して、メインベクトルの底部の90%のみを取ります。

2

次のように私はクォンタイル機能を使用します。

x <- rnorm(50) 
p90 <- quantile(x = x,probs = .9) 
want <- x[x<p90] 
関連する問題