2013-01-10 17 views
6

मैं एक डेटा फ्रेम है कि इस तरह दिखता है की आईडी युक्त जोड़ने:,आर डुप्लीकेट पंक्तियों के संयोजन और नया स्तंभ डुप्लिकेट

Chr start stop ref alt Hom/het ID 
chr1 5179574 5183384 ref Del Het 719 
chr1 5179574 5184738 ref Del Het 915 
chr1 5179574 5184738 ref Del Het 951 
chr1 5336806 5358384 ref Del Het 376 
chr1 5347979 5358384 ref Del Het 228 

मैं किसी भी डुप्लिकेट पंक्तियों को मर्ज करना चाहते हैं पिछले आईडी स्तंभ तो वह सब के संयोजन आईडी इस प्रकार, एक पंक्ति/स्तंभ में हैं: लोग डुप्लिकेट को दूर करने और एक स्तंभ संक्षेप की

Chr start stop ref alt Hom/het ID 
chr1 5179574 5183384 ref Del Het 719 
chr1 5179574 5184738 ref Del Het 915, 951 
chr1 5336806 5358384 ref Del Het 376 
chr1 5347979 5358384 ref Del Het 228 

मैं पाया है उदाहरण है, लेकिन मैं सिर्फ एक कॉलम में एक सूची में डुप्लिकेट क्षेत्रों के साथ सभी आईडी संयोजित करना चाहते हैं।

+0

हालांकि यह एक ही स्थिति में शुरू होता है, पहला अनुक्रम अगले दो का डुप्लिकेट प्रतीत नहीं होता है चूंकि यह थोड़ा लंबा है। क्या आप इस उदाहरण में "डुप्लिकेट" के रूप में परिभाषित करने के बारे में बता सकते हैं? – MattLBeck

+0

क्षमा करें, मेरी गलती को मेरे उदाहरण को बारीकी से देखने के लिए नहीं। आईडी कॉलम को छोड़कर सभी कॉलम में एक डुप्लिकेट सटीक मिलान होगा। – user1967407

उत्तर

7

कुछ कॉल aggregate() को चाल करना चाहिए।

यहाँ एक विकल्प है कि पहचान पत्र एकत्र करता है एक सूची वस्तु में है:

df2 <- aggregate(df[7], df[-7], 
       FUN = function(X) paste(unique(X), collapse=", ")) 

दो विकल्पों में से परिणाम की तुलना:

(df1 <- aggregate(df[7], df[-7], unique)) 
# Chr start stop ref alt Hom.het  ID 
# 1 chr1 5179574 5183384 ref Del  Het  719 
# 2 chr1 5179574 5184738 ref Del  Het 915, 951 
# 3 chr1 5336806 5358384 ref Del  Het  376 
# 4 chr1 5347979 5358384 ref Del  Het  228 

और यहाँ एक है कि उन्हें एक चरित्र वेक्टर में जमा करता है

str(df1$ID) 
# List of 4 
# $ 0: int 719 
# $ 3: int [1:2] 915 951 
# $ 7: int 376 
# $ 8: int 228 

str(df2$ID) 
# chr [1:4] "719" "915, 951" "376" "228" 
+1

+1 शायद यह इंगित करना अच्छा होगा कि 'आईडी' एक 'सूची' बन जाती है, न कि परमाणु वेक्टर? –

+0

धन्यवाद, वे दोनों अच्छी तरह से काम करते हैं, और मुझे लगता है कि आखिरी व्यक्ति मेरी ज़रूरतों के लिए सबसे अच्छा काम करता है। – user1967407

+0

धन्यवाद @ मैथ्यूप्लोर्डे, बस यही किया। –

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