ভাবছেন যে কেউ যদি আর এর কোনও প্যাকেজ / ফাংশন জুড়ে চলেছে যা এমন কোনও ফ্যাক্টরের স্তরগুলিকে একত্রিত করবে যেটির উপাদানগুলির সমস্ত স্তরের অনুপাতটি কিছু প্রান্তিকের চেয়ে কম? বিশেষত, আমি প্রস্তুত ডেটা প্রস্তুতির প্রথম পদক্ষেপগুলির মধ্যে একটি হল বিরল স্তরের কারণগুলি একসাথে ('অন্যান্য' নামক একটি স্তরে বলুন) ভেঙে ফেলা যা কমপক্ষে মোট 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