ファクターのすべてのレベルの比率が特定のしきい値よりも小さいファクターのレベルを組み合わせるRのパッケージ/関数を誰かが実行したかどうか疑問に思いますか?具体的には、私が実施するデータ準備の最初のステップの1つは、少なくとも合計の2%を構成しない、因子のまばらなレベルを(たとえば、「その他」と呼ばれるレベルに)まとめることです。これは、監視なしで行われ、目的がマーケティングの活動をモデル化することである場合に行われます(これらの非常に小さな発生が非常に重要である可能性がある不正検出ではありません)。あるしきい値の割合に達するまでレベルを縮小する関数を探しています。
更新:
これらの素晴らしい提案のおかげで、私はかなり簡単に関数を書きました。ただし、比率<最小のレベルを折りたたむことは可能であり、再コーディングされたレベルが<最小であるため、比率>最小の最低レベルを追加する必要があることに気付きました。おそらくより効率的ですが、動作するようです。次の拡張は、折りたたみロジックを新しいデータ(検証セットまたは将来のデータ)に適用するための「ルール」を取得する方法を理解することです。
collapseFactors<- function(tableName,minPercent=5,fillIn ="RECODED" )
{
for (i in 1:ncol(tableName))
{
if(is.factor(tableName[,i]) == TRUE) #process just factors
{
sortedTable<-sort(prop.table(table(tableName[,i])))
numberToCollapse<-length(sortedTable[sortedTable<(minPercent/100)])
if (sum(sortedTable[1:numberToCollapse])<(minPercent/100))
{
numberToCollapse=numberToCollapse+1 #add next level if < minPercent
}
if(numberToCollapse>1) #if not >1 then nothing to collapse
{
lf <- names(sortedTable[1:numberToCollapse])
levels(tableName[,i])[levels(tableName[,i]) %in% lf] <- fillIn
}
}#end if a factor
}#end for loop
return(tableName)
}#end function