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
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)]