หากสงสัยว่ามีใครวิ่งข้ามแพ็คเกจ / ฟังก์ชั่นใน R ที่จะรวมระดับของปัจจัยที่มีสัดส่วนของระดับทั้งหมดในปัจจัยน้อยกว่าขีด จำกัด บางอย่าง? โดยเฉพาะอย่างยิ่งหนึ่งในขั้นตอนแรกในการเตรียมข้อมูลที่ฉันดำเนินการคือการยุบปัจจัยที่กระจัดกระจายในระดับต่างๆ (พูดในระดับที่เรียกว่า 'อื่น ๆ ') ที่ไม่ได้ประกอบด้วยอย่างน้อย 2% ของทั้งหมด สิ่งนี้ทำโดยไม่ได้รับอนุญาตและทำเมื่อวัตถุประสงค์คือเพื่อจำลองกิจกรรมบางอย่างในการตลาด (ไม่ใช่การตรวจจับการฉ้อโกงซึ่งเหตุการณ์เหล่านั้นมีความสำคัญน้อยมาก) ฉันกำลังมองหาฟังก์ชั่นที่จะยุบระดับจนกระทั่งได้สัดส่วนตามเกณฑ์
UPDATE:
ขอบคุณคำแนะนำที่ดีเหล่านี้ฉันเขียนฟังก์ชั่นได้อย่างง่ายดาย ฉันรู้ว่ามันเป็นไปได้ที่จะยุบระดับด้วยสัดส่วน <ต่ำสุดและยังคงมีระดับที่ถูกถอดรหัสเป็น <ต่ำสุดซึ่งต้องการการเพิ่มระดับต่ำสุดพร้อมสัดส่วน> ต่ำสุด มีแนวโน้มที่จะมีประสิทธิภาพมากขึ้น แต่ดูเหมือนจะทำงาน การปรับปรุงต่อไปคือการหาวิธีจับ "กฎ" สำหรับการใช้ตรรกะการยุบกับข้อมูลใหม่ (ชุดการตรวจสอบหรือข้อมูลในอนาคต)
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