我已经从网站上下载了Amazon数据,其中显示了产品编号和客户购买某种产品后购买的推荐产品。
例如,数据文件如下所示:
ProductID Recommended Product ID
0 1
0 2
0 3
0 4
1 0
1 2
structure(list(ProductID = structure(c(1L, 1L, 1L, 1L, 2L, 2L
), .Label = c("0", "1"), class = "factor"), Recommended_Product_ID = structure(c(1L,
2L, 3L, 4L, 2L, 3L), .Label = c("1", "2", "3", "4"), class = "factor")), .Names = c("ProductID",
"Recommended_Product_ID"), row.names = c(NA, -6L), class = "data.frame")
这是数据文件的示例。现在,我们必须使用Bipartite软件包来执行此操作,因此,我必须跳过数据集中重复的某些元素,如上述数据集中那样,我们的连接来自:
0 1
所以,既然连接从0到1,那么我们跳过:
1 0
这是我目前拥有的:
library(bipartite)
library(igraph)
library(lpbrim)
data <- read.csv("./dataset.txt", header = F, sep = "\t", col.names = c("product1", "recommproduct"))
aggLevel = length(list(data$product1))
在代码中,我试图找出某人是否购买了ID为0的产品,那么还购买了多少其他产品。因此,在数据集中,它会在推荐产品ID列表中显示与相应产品ID一起购买的其他产品ID。
当我打印变量aggLevel
时,得到的是1,而不是获得对应于相应产品ID的推荐产品的数量。
感谢您的帮助。
答案 0 :(得分:0)
如果您想按ProductID
计算推荐产品,则有3种基本R方式。
xtabs( ~ ProductID, data)
tapply(data$Recommended, data$ProductID, length)
aggregate(Recommended ~ ProductID, data, length)
还有一个带有包dplyr
的包。
library(dplyr)
data %>% group_by(ProductID) %>% summarise(Count = n())
数据。
data <- read.csv(text = "
ProductID ,Recommended Product ID
0 ,1
0 ,2
0 ,3
0 ,4
1 ,2
1 ,3
")
names(data)[2] <- "Recommended"