我的数据框看起来像 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,但是我很难理解其相关性。
答案 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))