私はデータ フレームを持っており、因子変数を取り、上位 31 レベルのみを保持し、他のすべてのレベルを一般的なレベルにしようとしています。
いくつかのベクトルでこれを行う必要があるため、関数を作成すると考えましたが、あまり運がありません。何らかの方法でmapply
orを使用する必要Vectorize
があると思いますが、3.6 ギガのメモリを割り当てることができないというエラー メッセージが表示されるため、正しく行っているとは思いません。
これは、x がベクトルで、topCount が保持するレベルの数である関数です。
createFactor <-function(x, topCount){
table1 <- data.frame(table(x))
table1 <- table1[order(-table1$Freq),]
noChange <- table1$Var1[1:topCount]
newVals1 <- factor(ifelse(x %in% noChange, x, "-1000"))
newVals1
}
私はこのようなものを書くことができるようにしたいと思います:
df1$topLevels <- createFactor(df1$fact1, 31)
助言がありますか ?