首页 > 解决方案 > R相关问题,如何找到最频繁的变量对?

问题描述

我有一个看起来像 这样的数据框

我的目标是找到最常见的一对项目,在这种情况下(1 和 3)

我已经尝试过了:


names(tail(sort(table(unlist(tapply(ol$ORDER_ID, ol$SKU_ID,
                FUN = function(x) if(length(x) > 1) combn(unique(x), 2, paste, collapse="-") else NA)))),
           3))

但我不断收到此错误消息,我不知道如何修复它。

Error in combn(unique(x), 2, paste, collapse = "-") : n < m

有人建议

library(dplyr), then count(your_data, ORDER_ID, SKU_ID) %>% arrange(desc(n))

但它仍然给我同样的错误信息,另一个人把我推荐给了这篇文章,但我很难看到相关性。

标签: r

解决方案


在基础 R 中,您可以执行以下操作:

tab <- table(ol$SKU_ID, ol$ORDER_ID)
as.numeric(combn(row.names(tab), 2)[,
                which.max(rowSums(apply(combn(row.names(tab), 2), 1, 
                         function(x) rowSums(tab[x,]))))])
#> [1] 1 3

使用的数据

ol <- data.frame(
  ORDER_ID = c(111, 111, 121, 121, 121, 121, 131, 131, 141, 141, 141),
  SKU_ID   = c(1, 2, 1, 3, 4, 5, 1, 3, 1, 3, 9))

推荐阅读