这个问题在这里已经有了答案:
Table of Interactions - Case with pets and houses
(1 个回答)
5年前关闭。
我有数据显示哪些客户购买了某些商品。他们可以多次购买一件商品。我需要的是一个表格,其中显示了所有可能的成对组合项目以及购买该组合的唯一客户数量(表格的对角线将只是购买每个项目的唯一人数)。
下面是一个例子:
item <- c("h","h","h","j","j")
customer <- c("a","a","b","b","b")
test.data <- data.frame(item,customer)
这是 test.data:
item customer
h a
h a
h b
j b
j b
需要的结果 - 一个表,其中的项目作为行名和列名,以及在表内购买该对的唯一客户的计数。因此,2 位顾客购买了商品 h,1 位顾客同时购买了商品 h 和 j,1 位顾客购买了商品 j。
item h j
h 2 1
j 1 1
我试过使用表函数,
melt
/cast
等,但没有什么能让我得到我需要在表中的计数。我的第一步是使用 unique()
摆脱重复的行。
最佳答案
这是一个基本的R解决方案:
n_intersect <- Vectorize( function(x,y) length(intersect(x,y)) )
cs_by_item <- with(test.data, tapply(customer, item, unique))
outer(cs_by_item , cs_by_item , n_intersect)
# h j
# h 2 1
# j 1 1
关于r - 创建包含来自 R 中一列的所有值对的表,计算唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32976966/