2012-12-06 13 views
22

मैं इतनाडुप्लिकेट

> df 
    a b c d 
1 1 2 A 1001 
2 2 4 B 1002 
3 3 6 B 1002 
4 4 8 C 1003 
5 5 10 D 1004 
6 6 12 D 1004 
7 7 13 E 1005 
8 8 14 E 1006 

मैं पंक्तियों जहां स्तंभ सी और स्तंभ घ में मान दोहराया जाता निकालना चाहते हैं की तरह एक डेटा फ्रेम है। तो इस उदाहरण में 2,3,5 और 6 पंक्तियां हटा दी जाएंगी।

मैं इस का इस्तेमाल किया है, जो काम करता है:

df[!(df$c %in% df$c[duplicated(df$c)] & df$d %in% df$d[duplicated(df$d)]),] 
>df 
    a b c d 
1 1 2 A 1001 
4 4 8 C 1003 
7 7 13 E 1005 
8 8 14 E 1006 

लेकिन यह भद्दा लगता है और मैं मदद नहीं कर सकता लेकिन लगता है कि वहाँ एक बेहतर तरीका है। कोई सुझाव?

df = structure(list(a = c(1, 2, 3, 4, 5, 6, 7, 8), b = c(2, 4, 6, 
8, 10, 12, 13, 14), c = structure(c(1L, 2L, 2L, 3L, 4L, 4L, 5L, 
5L), .Label = c("A", "B", "C", "D", "E"), class = "factor"), 
    d = c(1001, 1002, 1002, 1003, 1004, 1004, 1005, 1006)), .Names = c("a", 
"b", "c", "d"), row.names = c(NA, -8L), class = "data.frame") 
+0

यह भी देखें http://stackoverflow.com/questions/13742446/duplicates-in-multiple-columns –

उत्तर

21

यह काम करता है अगर आप duplicated दो बार का उपयोग करें::

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

    a b c d 
1 1 2 A 1001 
4 4 8 C 1003 
7 7 13 E 1005 
8 8 14 E 1006 
+1

क्या कोई मुझे समझा सकता है कि यह क्यों काम करता है? मैंने इसका इस्तेमाल किया, और यह काम करता है, लेकिन मुझे समझ में नहीं आता है। डेटा फ्रेम को "डुप्लिकेट नहीं किया गया" या "डुप्लिकेट" डी डुप्लिकेट क्यों करता है? – jessi

+2

@ जेसेई सूत्र * नहीं है (डुप्लिकेट या डुप्लिकेट) *। पहला डुप्लिकेट डुप्लिकेट मानों की पहली घटनाओं की पहचान नहीं करता है और दूसरा डुप्लिकेट डुप्लिकेट मानों की अंतिम घटनाओं की पहचान नहीं करता है। साथ में, वे * सभी * डुप्लिकेट मानों की पहचान करते हैं। –

+0

आप केवल पहला डुप्लिकेट रिकॉर्ड कैसे रखेंगे? – mob

14

2 के साथ एक नई वस्तु बनाने

मामले में किसी को भी डेटा फ्रेम यहाँ फिर से बनाने के लिए करना चाहता है dput कॉलम:

df_dups <- df[c("c", "d")] 

अब अपने मुख्य df पर लागू:

df[!duplicated(df_dups),] 

आपके द्वारा उपयोग किए जा रहे कॉलम को देखने और बदलने में आसान लग रहा है।

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