ddply用于创建列表的并集

时间:2013-07-15 21:17:46

标签: r plyr

我有一个包含customerid和列表的数据框。 我想合并那些与同一客户有关的清单。

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

如果我想将子集与ddply合并,我会得到一个扩展的结果

> 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

虽然我预计所有结果都会排成一行。

1 个答案:

答案 0 :(得分:4)

您可以这样做:

ddply(transactions, .(customerid), function(x) 
            data.frame(subset=I(list(unlist(x$subset)))))

编辑:我不确定我是否按照您的意见。但是,如果您想要customerid的每个subset中只有唯一值,那么:

ddply(transactions, .(customerid), function(x) 
            data.frame(subset=I(list(unique(unlist(x$subset))))))