2012-12-07 17 views
11

PHP के लिए similar question है, लेकिन मैं आर के साथ काम कर रहा हूं और मेरी समस्या के समाधान का अनुवाद करने में असमर्थ हूं।मैं सभी डुप्लीकेट कैसे हटा सकता हूं ताकि डेटा फ्रेम में कोई भी छोड़ा न जाए?

मेरे पास 10 पंक्तियों और 50 कॉलम के साथ यह डेटा फ्रेम है, जहां कुछ पंक्तियां बिल्कुल समान हैं। यदि मैं इस पर अद्वितीय उपयोग करता हूं, तो मुझे प्रति पंक्ति एक पंक्ति मिलती है - मान लें - "टाइप करें", लेकिन जो मैं वास्तव में चाहता हूं वह केवल उन पंक्तियों को प्राप्त करना है जो केवल एक बार दिखाई देते हैं। क्या कोई जानता है कि मैं इसे कैसे प्राप्त कर सकता हूं?

मैं इसे मैन्युअल रूप से सॉर्ट करने के लिए क्लस्टर और हीटमैप पर एक नज़र डाल सकता हूं, लेकिन मेरे ऊपर ऊपर वर्णित एक से अधिक डेटा फ्रेम हैं (100 पंक्तियों के साथ) जहां यह थोड़ा मुश्किल हो जाता है।

उत्तर

33

यह पंक्तियाँ जो केवल एक बार दिखाई निकाल देंगे (आपका डेटा फ्रेम संभालने df नाम है):

df[!(duplicated(df) | duplicated(df, fromLast = TRUE)), ] 

यह कैसे काम करता है: समारोह duplicated परीक्षण एक पंक्ति में कम से कम दूसरी बार के लिए प्रकट होता है कि क्या लाइन एक से शुरू। यदि तर्क fromLast = TRUE का उपयोग किया जाता है, तो फ़ंक्शन अंतिम पंक्ति से शुरू होता है।

दोनों बूलियन परिणाम | (तार्किक 'या') के साथ एक नए वेक्टर में संयुक्त होते हैं जो सभी पंक्तियों को एक से अधिक बार प्रदर्शित करता है। इसका परिणाम ! का उपयोग करके अस्वीकार कर दिया गया है जिससे एक बूलियन वेक्टर बना रहा है जो केवल एक बार दिखाई देने वाली रेखाओं को इंगित करता है।

संबंधित मुद्दे