0

My data is like

  Part   Supplier
1  A      P
2  A      Q
3  B      R
4  B      S
5  B      T
6  C      U
7  C      V
8  C      W
9  C      X

desired output

  Part   Supplier
1 A      P,Q 
2 B      R,S,T
3 C      U,V,W,X

please suggest

tmfmnk
  • 38,881
  • 4
  • 47
  • 67
Mayur
  • 31
  • 3

1 Answers1

0

We can use aggregate to paste the 'Supplier' for each 'Part'

aggregate(Supplier ~ Part, df1, toString)
#    Part   Supplier
#1    A       P, Q
#2    B    R, S, T
#3    C U, V, W, X

Or with dplyr

library(dplyr)
df1 %>% 
    group_by(Part) %>%
    summarise(Supplier = toString(Supplier))

Or some versions

df1 %>% 
    group_by(Part) %>%
    summarise(Supplier = paste(Supplier, collapse = ", ))

If there are more than one column

df1 %>%
     group_by(Part) %>%
     summarise_if(is.character, toString)

Or using data.table

library(data.table)
setDT(df1)[, .(Supplier = toString(Supplier)), .(Part)]
akrun
  • 874,273
  • 37
  • 540
  • 662