में डुप्लिकेट कॉलम की पहचान करना मैं एक आर नौसिखिया हूं और एक बड़े पैमाने पर डेटाफ्रेम (50 के पंक्तियों, 215 कॉलम) से डुप्लिकेट कॉलम हटाने का प्रयास कर रहा हूं। फ्रेम में निरंतर निरंतर और स्पष्ट चर का मिश्रण होता है।आर डेटा फ्रेम
मेरे दृष्टिकोण एक सूची में फ्रेम में प्रत्येक स्तंभ के लिए एक मेज उत्पन्न करने के लिए है, तो, duplicated()
फ़ंक्शन का उपयोग सूची है कि डुप्लिकेट हैं में पंक्तियों को खोजने के लिए इस प्रकार किया गया है:
age=18:29
height=c(76.1,77,78.1,78.2,78.8,79.7,79.9,81.1,81.2,81.8,82.8,83.5)
gender=c("M","F","M","M","F","F","M","M","F","M","F","M")
testframe = data.frame(age=age,height=height,height2=height,gender=gender,gender2=gender)
tables=apply(testframe,2,table)
dups=which(duplicated(tables))
testframe <- subset(testframe, select = -c(dups))
यह 'isn टी बहुत कुशल, विशेष रूप से बड़े निरंतर चर के लिए। हालांकि, मैं इस मार्ग नीचे चले गए हैं, क्योंकि मैं सारांश का उपयोग करते हुए एक ही परिणाम प्राप्त करने में असमर्थ किया गया है (ध्यान दें, निम्नलिखित एक मूल testframe
युक्त डुप्लिकेट मान लिया गया):
summaries=apply(testframe,2,summary)
dups=which(duplicated(summaries))
testframe <- subset(testframe, select = -c(dups))
आपको लगता है कि कोड चलाते हैं तो आप करेंगे देखें कि यह केवल पहले डुप्लिकेट को हटा देता है। मुझे लगता है कि ऐसा इसलिए है क्योंकि मैं कुछ गलत कर रहा हूं। क्या कोई यह बता सकता है कि मैं कहां गलत हो रहा हूं या इससे भी बेहतर, डेटाफ्रेम से डुप्लिकेट कॉलम को हटाने के बेहतर तरीके की दिशा में मुझे इंगित कर सकता हूं?
इसके अलावा 'digest' उपयोग करने के लिए की सुझाव @kohske, यह' उपयोग करने के लिए बजाय 'सु की c' पर्याप्त हो सकता है 'लापरवाही' समारोह के रूप में mmary'। – BenBarnes
यह ध्यान दिया जाना चाहिए कि चरित्र वैक्टर के लिए सारांश एक ही सारांश का उत्पादन करेगा, भले ही वे अलग हों। ऐसा इसलिए है क्योंकि एक चरित्र वेक्टर पर सारांश केवल वेक्टर की लंबाई – hshihab