I have a data frame where I want to separate values in the Client.ID column and melt, so each row contains one Client.ID and and the corresponding Account.Name and owner.
> head(df)
Account.Owner Account.Name Client.ID
1 Deb Berman Albertsons LLC 3184, 3186, 3185, 2578
2 Deb Berman All Recipes 909, 4937
3 Liz Madsen American Express 1230,1236
4 Deb Berman Bed Bath & Beyond 1180, 1556
5 Deb Berman Birchbox 101, 1704, 5149, 5150, 5148
6 Jeff Murphy Brown Shoe Company 5402, 6159, 6160
At the end I want it to look like so
Account.Owner Account.Name Client.ID
1 Deb Berman Albertsons LLC 3184
2 Deb Berman Albertsons LLC 3186
3 Deb Berman Albertsons LLC 3185
Thanks.
I would suggest my
cSplit
function for a problem like this. The solution becomes:The arguments used here are: (1) the
data.frame
ordata.table
to work with, (2) the column or columns that need to be split up, (3) the separator, and (4) whether the result should be "wide" or "long".You may want to modify it as follows:
cSplit(mydf, "Client.ID", ", ", "long")
orcSplit(mydf, "Client.ID", ",|,\\s+", "long", fixed = FALSE)
depending on how nice and clean your "Client.ID" column really is.This assumes we're starting with the following sample dataset: