2017-08-16 30 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