2014-09-11 15 views
10

में मैं group_by करते हैं औरस्ट्रिंग हेरफेर/agregation dplyr

df<-data.frame(varx=c("x1","x1","x2","x2","x2"),vary=c("y1","y2","y3","y4","y5")) 

मैं निर्गम (newdf) चाहते dplyr उपयोग करते हुए इस तरह देखने के लिए एक डेटा फ्रेम के लिए एक स्ट्रिंग आपरेशन क्या करना चाहते हैं:

newdf <- data.frame(varx=c("x1","x2"),catY=c("y1,y2","y3,y4,y5")) 

मैं dplyr में निम्नलिखित की कोशिश की

df %>% group_by(varx)%>%summarise(catY=paste(vary)) 
Error: expecting a single value 

भी करने की कोशिश की है:

df %>% group_by(varx)%>%mutate(catY=paste(vary)) 

Source: local data frame [5 x 3] 
Groups: varx 

मैं मूल डेटा फ्रेम ऑपरेशन का उपयोग करके इसे कर सकता हूं। dplyr में एक रास्ता समझने में मदद की ज़रूरत है।

+4

'df%>% group_by (varx)%>% संक्षेप (caty = पेस्ट (भिन्नता है, पतन =", "))'। 'पेस्ट' आपको एक वेक्टर देता है ताकि आपको इसे एक आयामी चरित्र वेक्टर –

+0

धन्यवाद डेविड में 'पतन' करने की आवश्यकता हो ... यह काम किया ... – Pradeep

+0

धन्यवाद डेविड, आप इस टिप्पणी को उत्तर के रूप में क्यों नहीं लिखते? तो यह बेहतर पदोन्नत किया जाएगा। –

उत्तर

10

डेविड की टिप्पणी का थोड़ा छोटा संस्करण होगा:

library(dplyr) 
df %>% group_by(varx) %>% summarise(catY = toString(vary)) 

#Source: local data frame [2 x 2] 
# 
# varx  catY 
#1 x1  y1, y2 
#2 x2 y3, y4, y5 
+1

आप कुछ फंकी आउटपुट देखना चाहते हैं, 'df%>% group_by (varx)%>% do (data.frame (catY = list (। $ भिन्न)) देखें' –

+0

हाहा, यह एक अच्छा है (शायद ' dplyr :: do' अभी तक पूरी तरह से परिपक्व नहीं है?) @RichardScriven –

+0

वैसे भी यह एक बहुत बेकार ऑपरेशन है जिसे मैंने कोशिश की –

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