按产品编号在R中分组数据

时间:2019-01-29 20:56:37

标签: r

我已经从网站上下载了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的推荐产品的数量。

感谢您的帮助。

1 个答案:

答案 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"