r - 创建包含来自 R 中一列的所有值对的表,计算唯一值

标签 r reshape

这个问题在这里已经有了答案:





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/

相关文章:

r - 如何将命名向量更改为保留名称的数据框?

python - 使用 Pandas reshape 长格式多值数据框

r - 如何分析 R 包的加载

r - 使用 rmarkdown 在 knit 中从列表中打印 ggplots 不起作用

R网状包和python子模块

python - 计算 DataFrame 中的出现次数

python - 如何将行和列添加到 NUMPY 数组?

r - 如何根据它们对 R 中所有列的总和的贡献来删除数据框中的列

json - 转换 JSON 数据的性能问题

r - "Reshape"长格式数据成两个序列