在R / Excel中将多行数据转换为单行

时间:2015-03-18 10:13:51

标签: r excel apriori market-basket-analysis

我正在研究Market Basket Analysis的交易数据,下面提到了表格格式:

Id Product    
 1  Prod A    
 1  Prod B    
 1  Prod C    
 1  Prod D   
 2  Prod A    
 2  Prod B

我想转换数据的布局,以便apriori算法可以工作,将数据作为单个事务数据。因此,为此,我想将数据转换为以下格式:

Id Column1 Column2 Column3 Column3    
 1  Prod A  Prod B  Prod C  Prod D    
 2  Prod A  Prod B
  1. 有人可以帮我解决在R或Excel中转​​换此数据的方法吗?

  2. 这个数据是否适用于在R中运行apriori算法(希望它能运行)?

2 个答案:

答案 0 :(得分:3)

dcast中使用reshape2R个包:

df <- data.frame(Id=c(1,1,1,1,2,2), Product=c("Prod A", "Prod B", "Prod C", "Prod D", "Prod A", "Prod B"))

library(reshape2)
dcast(df, Id~Product, value.var="Product")
#    Id Prod A Prod B Prod C Prod D
#  1  1 Prod A Prod B Prod C Prod D
#  2  2 Prod A Prod B   <NA>   <NA>

答案 1 :(得分:0)

ID <- c(1,1,1,1,2,2)
Product <- c("Prod A","Prod B","Prod C","Prod D","Prod A","Prod B")
df <- data.frame (ID, Product)

您可以使用

为第2步创建虚拟对象
> xtabs(~ID  +Product, df)

 ID Prod A Prod B Prod C Prod D
  1      1      1      1      1
  2      1      1      0      0

在第二步中,您可以使用包arules