转换R中市场篮子分析的数据框架

时间:2015-02-19 09:44:08

标签: r dataframe transformation

我正在尝试用R进行Market Basket Analysis并遇到问题。我使用.csv文件,其中有两列“Product”和“Customer”。购买不同产品时,客户编号重复多次。该表看起来像:

Product Customer    
114  1    
112  2    
112  1   
113  4    
115  3    
113  2   
111  2    
113  3

我需要这样做:(两栏:客户,产品。对于每个客户,他在一个单元中购买的所有产品)。

客户产品

1 114, 112    
2 112, 113, 111    
3 115, 113    
4 113

我该怎么办?

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:0)

您可以使用aggregatedf包含原始数据框):

aggregate(Product~Customer, df, paste, sep = ", ")
#   Customer       Product
# 1        1      114, 112
# 2        2 112, 113, 111
# 3        3      115, 113
# 4        4           113

dcast取决于您希望输出显示的内容:

library(reshape2)
dcast(transform(df, count = 1), Customer~Product, fill = 0)
#   Customer 111 112 113 114 115
# 1        1   0   1   0   1   0
# 2        2   1   1   1   0   0
# 3        3   0   0   1   0   1
# 4        4   0   0   1   0   0

答案 1 :(得分:0)

如果您的数据是

Product <- c(114,112,112,113,115,113,111,113)
Customer <- c(1,2,1,4,3,2,2,3)
df <- data.frame(Product,Customer)

您可以使用tapply(不使用&gt;)

> tapply(df$Product,df$Customer,list)

$`1`
[1] 114 112

$`2`
[1] 112 113 111

$`3`
[1] 115 113

$`4`
[1] 113