1

1 つの変数がカテゴリであり、可能な値が多数あるデータ フレームがあります。このデータ フレームを、発生回数 X 未満のカテゴリ変数のインスタンスを削除する方法で処理しようとしています。

たとえば、車のメーカーを変数として扱っている場合、次のようになります。

Toyota
Ford
Lexus
Ford
Acura
Subaru
Dodge
Ford
Ford
Lexus
...
...
...

car make classifier の出現回数が 10 回未満のすべての観測を削除したいと思います。たとえば、Ford、Lexus、および Toyota が 30 回、20 回、および 15 回表示され、他のすべてが 10 回未満である場合、それらのメーカーに関連付けられている他のすべてのエントリを削除したいと思います。

私はそのようなコマンドを知っています

cars.processed <- which(table(cars$make) > 10)

必要な基準を満たす分類子の数の整数カウントを生成しますが、そこから先に進む方法がわかりません。

ご協力いただきありがとうございます!

4

1 に答える 1

1

それDFがあなたのdata.frameでありx、質問の列であり、thrあなたのしきい値であると仮定しましょう:

thr <- 3
keep <- names(which(table(DF$x) > thr))
DF   <- DF[DF$x %in% keep, ]

# optionally, drop levels
DF$x <- droplevels(DF$x)

これも data.table ソリューションです。

library(data.table)

DT <- data.table(DF)

DT[x %in% names(which(table(x)>thr))]

または、xに従って行を並べ替えてもかまわない場合は、さらに簡潔になります

DT <- data.table(DF, key="x")

DT[.(names(which(table(x)>thr)))]
于 2013-05-14T19:57:02.450 に答える