팩터의 모든 레벨의 비율이 임계 값보다 작은 팩터의 레벨을 결합하는 패키지 / 함수를 R에서 실행했는지 궁금하십니까? 구체적으로, 내가 수행하는 데이터 준비의 첫 번째 단계 중 하나는 전체의 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