2012-09-20 17 views
5

संभव डुप्लिकेट:
dropping factor levels in a subsetted data frame in Rआर में भूत कारक स्तरों

मैं एक निश्चित कारक स्तर के साथ टिप्पणियों दूर subsetted है। यह जांचते समय कि यह summary() के साथ किया गया है, स्तर अभी भी सूचीबद्ध थे, लेकिन शून्य अवलोकन के साथ। वे सबसेटिंग के दौरान गायब नहीं होना चाहिए?

उत्तर

14

सब्सक्रिप्टिंग खाली स्तर नहीं छोड़ता है। ऐसा क्यों है कि यह एक विशेषता है। इसके बारे में सोचें क्योंकि आपके कारक स्तर चीज की संभावित/संभावित श्रेणियों को निर्धारित करते हैं। यदि आप केवल इन चीजों का सबसेट लेते हैं, तो चीज की संभावित श्रेणियां बदलती नहीं हैं, आपके सबसेट में उनमें से कोई भी शामिल नहीं है।

यदि आप इन खाली स्तरों को छोड़ना चाहते हैं, तो ?droplevels देखें।

+1

डेटा फ्रेम पर लागू 'बूंदवेल' का एकमात्र खतरा यह है कि डिफ़ॉल्ट रूप से यह ** सभी ** कारकों के लिए खाली स्तर छोड़ देगा (केवल फोकल कारक के स्तर के बजाय), जो अवांछित हो सकता है। –

+2

ठीक है, एक कारक के लिए मैं 'obj <- transform (obj, fac = droplevels (fac)) करता हूं,' अगर मैं अन्य कारकों को छूना चाहता हूं। –

8

अतिरिक्त स्तरों गायब करने के लिए, drop=TRUE का उपयोग करते हैं subsetting:

newfactor <- oldfactor[indices, drop=TRUE] 

संयोग से, एक कारण यह नहीं डिफ़ॉल्ट है कि विभिन्न स्तरों के साथ कारकों की तुलना नहीं की जा सकती है, कर रहा है। तो यदि आप मूल कारक, या शायद वेक्टर के एक अलग सबसेट के साथ अपने कारकों की तुलना करना चाहते हैं, तो आपको अतिरिक्त स्तरों को रखने की आवश्यकता होगी।