在列中结合独特的观察结果

时间:2017-09-28 06:17:48

标签: r

我对R.非常新。我正在尝试使用大约90000个交易的数据框进行市场购物篮分析,其中订单ID具有多个项目,表示为多个观察。这是一个很大的excel文件。我只是将前12行作为样本数据框。

order <- c(1,1,1,1,1,2,2,2,2,3,3,3,3,3,3,3)
time <- c(13.40,13.40,13.40,13.40,13.40,18.20,18.20,18.20,18.20,22.45,22.45,22.45,22.45,22.45,22.45,22.45)
item <-c('dal', 'napkin','rice','tooth paste','washing powder','tooth paste', 'dal', 'rice','chocolate', 'rice','dal','chocolate',tooth paste','veggies','napkin','toor dal')
dataframe <- data.frame(order, time,item)

现在我想组合订单并制作一个稀疏的项目矩阵。有人能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

order <- c(1,1,1,1,1,2,2,2,2,3,3,3,3,3,3,3)
time <- c(13.40,13.40,13.40,13.40,13.40,18.20,18.20,18.20,18.20,22.45,22.45,22.45,22.45,22.45,22.45,22.45)
item <-c('dal', 'napkin','rice','tooth paste','washing powder','tooth paste', 'dal', 'rice','chocolate', 'rice','dal','chocolate','tooth paste','veggies','napkin','toor dal')
dataframe <- data.frame(order, time,item)

#seperate the Orders to one file each order
for( i in 1:length(unique(dataframe$order))){
  bez=paste("Order_",i,sep="")
  aux = subset(x = dataframe, subset = order ==i, select = c(order, item))
  assign(bez,aux)
}
#create a matrix with orders as columns and items as rows
matr = matrix(nrow = length(item), ncol = length(unique(order)))
rownames(matr) = item
aux = NA
#get 1 where an item is "ordered"
for(i in 1:length(unique(order))){
  aux = paste(get(paste("Order_",i,sep = ""))$item)
  matr[aux,i]=1
}
matr

你可以像这样运行代码......希望它是你想要的。 如果您有问题可以随意提问。

干杯

相关问题