2014-09-11 18 views
10

Tôi muốn thực hiện group_by và làm một hoạt động chuỗi cho một khung dữ liệu sử dụng dplyrChuỗi Manipulation/Agregation trong dplyr

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

Tôi muốn đầu ra (newdf) trông như thế này:

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

tôi đã thử các sau đây trong dplyr

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

Cũng thử như sau:

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

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

Tôi có thể làm điều đó bằng cách sử dụng thao tác khung dữ liệu cơ bản. Cần trợ giúp để tìm hiểu cách thoát trong dplyr.

+4

'df%>% group_by (varx)%>% Tóm tắt (Caty = dán (khác nhau, sự sụp đổ = "")) '. 'paste' cung cấp cho bạn một vectơ, do đó bạn cần phải" thu gọn "nó thành một vector ký tự một chiều –

+0

Cảm ơn David ... Điều đó đã làm việc ... – Pradeep

+0

Cảm ơn bạn David, tại sao bạn không viết nhận xét này làm câu trả lời? Vì vậy, nó sẽ được quảng cáo tốt hơn. –

Trả lời

10

Phiên bản hơi ngắn hơn bình luận của David sẽ là:

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

Bạn muốn xem một số đầu ra sôi nổi, hãy xem 'df%>% group_by (varx)%>% do (data.frame (catY = list (. $ Vary))) ' –

+0

haha, đó là một cái hay (có thể' dplyr :: do' chưa hoàn toàn trưởng thành?) @RichardScriven –

+0

Vâng đó cũng là một hoạt động khá vô dụng mà tôi đã thử –

Các vấn đề liên quan