MYaseen208
MYaseen208

Reputation: 23898

tidyverse: Concatenate rows if certain condition is met

I want to concatenate rows in a column (Des) if rows of the other column are same (Fn). Any hint please.

library(tidyverse)
tb1 <-
  tibble(
    Fn = c("A" , "B", "B", "C", "D", "D")
  , Des = c("A1", "B1", "B2", "C1", "D1", "D2")
  )
tb1

# A tibble: 6 x 2
  Fn    Des  
  <chr> <chr>
1 A     A1   
2 B     B1   
3 B     B2   
4 C     C1   
5 D     D1   
6 D     D2 

Output Required

Fn    Des  
<chr> <chr>
A     A1   
B     B1 B2   
C     C1   
D     D1 D2 

Upvotes: 0

Views: 309

Answers (1)

Edo
Edo

Reputation: 7818

With dplyr

Just group by Fn and paste+collapse rows together!

tb1 %>%
  group_by(Fn) %>% 
  summarise(Des = paste(Des, collapse = " "))

#> # A tibble: 4 x 2
#>   Fn    Des  
#>   <chr> <chr>
#> 1 A     A1   
#> 2 B     B1 B2
#> 3 C     C1   
#> 4 D     D1 D2

With base R

aggregate(Des ~ Fn, tb1, paste, collapse = " ")

#>   Fn   Des
#> 1  A    A1
#> 2  B B1 B2
#> 3  C    C1
#> 4  D D1 D2

Upvotes: 2

Related Questions