2017-01-09 11 views
0

大きな列車でランダムなフォレストを実行する必要がありますが、53レベル以上の変数は使用できません。ファクタ変数からレベルを下げる

要因変数(train$tip)削減する必要があるのは、150レベル(KHC、KTF、KGL、...)です。何回か出現し、より多くの数を持つレベルを保持する(迅速に)除去する(または53レベルのみを保持する)ことができますか?

レベルの名前をすべて書きますか?何回かありますか、より高速な方法がありますか?

train <- train[!train$tip == "KTF", ] 
+0

'tbl < - table(train $ tip)'を使用して頻度、すなわち 'サブセット(列レベル(tip)%%名(tbl [tbl> 50 ])) ' – akrun

答えて

4

あなたは行うことができます:

train <- train[train$tip %in% names(sort(table(train$tip), decreasing = TRUE))[1:53], ] 

table()はレベルの頻度を計算し、 sort()は降順に並べ替えます。 names()は頻度ではなくレベルを取得します。 [は最初の53だけを選択します。

+0

ありがとう!しかし、これは私に0行を返す.. – drewww

+0

申し訳ありませんが、私は名前を追加することを忘れてしまった。私の編集を参照してください、それは今動作するはずです – scoa

+0

今それは動作します!ありがとう。私は変数の先端から0のobsで今レベルを取り除くことができますか?私はstr(train $ tip)のすべての150レベルを参照してください – drewww