2013-07-15 7 views
7

मेरे पास एक डेटा फ्रेम है जिसमें एक ग्राहक और एक सूची है। मैं उसी ग्राहक से संबंधित उन सूची को मर्ज करना चाहता हूं।ddply सूचियों का संघ बनाने के लिए

library(plyr) 
subsets <- list(c("a", "d", "e"), c("a", "b", "c", "e")) 
customerids <- c(1,1) 
transactions <- data.frame(customerid = customerids,subset =I(subsets)) 
> transactions 
    customerid  subset 
1   1 a, d, e 
2   1 a, b, c, e 

अगर मैं ddply साथ सबसेट मर्ज करना चाहते हैं, मैं एक विस्तारित परिणाम

> ddply(transactions, .(customerid), summarise, subset=Reduce(union,subset)) 
    customerid subset 
1   1 a 
2   1 d 
3   1 e 
4   1 b 
5   1 c 

मिल रहा 1 पंक्ति में सभी परिणाम की उम्मीद है | जबकि।

+1

कदम dataframe बनाने में कोई त्रुटि फेंकता है। आपने शायद इसे अलग-अलग बनाया है और 'ड्यूटी (लेनदेन)' पोस्ट करना चाहिए। मुझे नहीं लगता कि डेटाफ्रेम सूची वस्तुओं को बहुत अच्छी तरह से पकड़ते हैं। डेटाफ्रेम में POSIXlt ऑब्जेक्ट्स के साथ-साथ एक अच्छी तरह से कठिनाई है। –

+0

वास्तव में मैंने एक गलत इनपुट कॉपी किया (नहीं मैं ऑपरेटर), यह तय है। डेटा Ifr के भीतर सूची तत्व बनाने के लिए 'I'' के लिए – nicolas

+0

+1। – agstudy

उत्तर

4

आप कुछ इस तरह कर सकते हैं:

ddply(transactions, .(customerid), function(x) 
      data.frame(subset=I(list(unlist(x$subset))))) 

संपादित करें: मुझे यकीन है कि मैं अपनी टिप्पणी का पालन नहीं कर रहा हूँ। लेकिन अगर आप तो subset के लिए प्रत्येक customerid भीतर सिर्फ अद्वितीय मान हैं:

ddply(transactions, .(customerid), function(x) 
      data.frame(subset=I(list(unique(unlist(x$subset)))))) 
+0

जानना अच्छा है। ddply कार्यान्वयन – nicolas

+0

वास्तव में देखते समय समझ में आता है, संघ डुप्लिकेट नहीं रखता है, इसलिए 'सूची' संदर्भ के लिए 'अद्वितीय' होना चाहिए। धन्यवाद ! – nicolas

+0

असल में, यह सरल संशोधन छोटा नहीं लगता है ... इसलिए मुझे चिह्न को हटाना होगा। – nicolas

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