I have a data frame which contains a customerid, and a list. I would like to merge those list pertaining to the same customer.
library(plyr)
subsets <- list(c("a", "d", "e"), c("a", "b", "c", "e"))
customerids <- c(1,1)
transactions <- data.frame(customerid = customerids,subset =I(subsets))
> transactions
customerid subset
1 1 a, d, e
2 1 a, b, c, e
If I want to merge the subsets with ddply, I get an expanded result
> ddply(transactions, .(customerid), summarise, subset=Reduce(union,subset))
customerid subset
1 1 a
2 1 d
3 1 e
4 1 b
5 1 c
while I would have expected all the results in 1 row.
You can do something like this:
ddply(transactions, .(customerid), function(x)
data.frame(subset=I(list(unlist(x$subset)))))
Edit: I'm not sure I follow your comments. But if you want just unique values within each customerid
for subset
then:
ddply(transactions, .(customerid), function(x)
data.frame(subset=I(list(unique(unlist(x$subset))))))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With