2017-08-16 29 views
0

我有3列R:在数据帧的多个列上串连串

category <- c("A", "A", "A", "B","B") 
id <- c(1,1,2,3,3) 
text <- c("abc", "def", "ghi", "jkl", "pqr") 
df <- data.frame(category,id,text) 

> df 
category id text 
1  A 1 abc 
2  A 1 def 
3  A 2 ghi 
4  B 3 jkl 
5  B 3 pqr 

我想连接每个ID每组

我的输出需要像文本以下的数据帧:

A 1 "abc def" 
A 2 "ghi" 
B 3 "jkl pqr" 

我尝试使用

library(stringr) 
str_c(df[,3], collapse = NULL) 

但我的输出是不正确的,也是我怎么能得到这个每个ID每组

+0

在基础R与'aggregate':'骨料(文本〜ID +类别,dat = df,粘贴)'。 – lmo

回答

3

使用dplyr,你可以这样做:

library(dplyr) 
df %>% group_by(category,id) %>% summarise(text=paste(text,collapse=" ")) 

    category id text 
    <fctr> <dbl> <chr> 
1  A  1 abc def 
2  A  2  ghi 
3  B  3 jkl pqr