与R相关的问题,如何找到最频繁的变量对?

时间:2020-11-09 14:12:33

标签: r

我的数据框看起来像 this

我的目标是找到最常见的商品,在这种情况下(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))

但是它仍然给我同样的错误信息,另一个人向我推荐了this post,但是我很难理解其相关性。

1 个答案:

答案 0 :(得分:0)

在基数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))