我有这种结构的数据:
data<-data.frame(TransactionNumber=rep(1:10, each=4),
Product=rep(c("a","b","c","d","e","f","g","c","i","j"), length.out=40))
TransactionNumber Product
1 1 a
2 1 b
3 1 c
4 1 d
5 2 e
6 2 f
7 2 g
8 2 c
9 3 i
10 3 j
11 3 a
12 3 b
13 4 c
14 4 d
15 4 e
16 4 f
17 5 g
18 5 c
19 5 i
20 5 j
21 6 a
22 6 b
23 6 c
24 6 d
25 7 e
26 7 f
27 7 g
28 7 c
29 8 i
30 8 j
31 8 a
32 8 b
33 9 c
34 9 d
35 9 e
36 9 f
37 10 g
38 10 c
39 10 i
40 10 j
我正在尝试为每个交易编号获取两种产品的所有可能组合 出现在给定的交易中(不重复)。每行都是一个组合。所以对于交易一,我会得到1.a b 2. a c等。我暂时没有成功挣扎。任何简单解决方案的想法?谢谢!
答案 0 :(得分:2)
require(plyr)
ddply(data, "TransactionNumber", .fun=function(x) {
t(combn(as.character(x$Product), 2))
})
# TransactionNumber 1 2
# 1 1 a b
# 2 1 a c
# 3 1 a d
# 4 1 b c
# 5 1 b d
# 6 1 c d
# 7 2 e f
# 8 2 e g
# 9 2 e c
# 10 2 f g
# 11 2 f c
# 12 2 g c
# 13 3 i j
# ...